ios - 如何在 swift 上使用 SLRequest 类将图像和文本发布到 twitter?

标签 ios swift twitter slrequest

func twitterSender(photoImported: UIImage) ->Void {
    let account = ACAccountStore()
    let accountType = account.accountTypeWithAccountTypeIdentifier(
        ACAccountTypeIdentifierTwitter)

    account.requestAccessToAccountsWithType(accountType, options: nil,
        completion: {(success: Bool, error: NSError!) -> Void in

            if success {
                let arrayOfAccounts =
                account.accountsWithAccountType(accountType)

                if arrayOfAccounts.count > 0 {
                    let twitterAccount = arrayOfAccounts.last as! ACAccount
                    var message = Dictionary<String, AnyObject>()
                    message["status"] = "My app test 5"
                    let imageData = UIImageJPEGRepresentation(photoImported, 0.9)
                    let imageString = imageData.base64EncodedStringWithOptions(NSDataBase64EncodingOptions.allZeros)
                    message["media_ids"] = imageString
                    let requestURL = NSURL(string:
                        "https://api.twitter.com/1.1/statuses/update.json")
                    let postRequest = SLRequest(forServiceType:
                        SLServiceTypeTwitter,
                        requestMethod: SLRequestMethod.POST,
                        URL: requestURL,
                        parameters: message)

                    postRequest.addMultipartData(imageData, withName: "oauth_*", type: "application/octet-stream", filename: "image.jpg")
                    postRequest.account = twitterAccount

                    postRequest.performRequestWithHandler({
                        (responseData: NSData!,
                        urlResponse: NSHTTPURLResponse!,
                        error: NSError!) -> Void in

                        if let err = error {
                            println("Error : \(err.localizedDescription)")
                        }
                        println("Twitter HTTP response \(urlResponse.statusCode)")
                    })
                }
            }
    })

}

我的代码的问题是只能发布没有图像的文本。我搜索了很多,并尝试在 twitter 的网站上找到一些信息。但我仍然很困惑该怎么做。 Twitter 曾经有一个名为 POST statuses/update_with_media 的 API 来完成我现在想做的工作。不幸的是,推特放弃了那个 API 并使用了一个新的 API。所以我确实发现了一些与我类似的问题,但所有这些问题要么使用 objective-c,要么使用那个旧的 twitter API。没有什么对我有帮助。大量研究花费了我很多时间,看起来我需要使用 addMultipartData 来完成这项工作,但我不知道如何填写这些参数,或者这可能是一个错误的方向。

最佳答案

func twitter(){
    let account = ACAccountStore()
    let accountType = account.accountTypeWithAccountTypeIdentifier(
        ACAccountTypeIdentifierTwitter)
    account.requestAccessToAccountsWithType(accountType, options: nil,completion: {(success: Bool, error: NSError!) -> Void in

        if success {
        let arrayOfAccounts = account.accountsWithAccountType(accountType)

        if arrayOfAccounts.count > 0 {
        let twitterAccount = arrayOfAccounts.last as! ACAccount
        var message = Dictionary<String, AnyObject>()
        message["status"] = self.txtPostDesc.text! //textbox
        let imageData = UIImagePNGRepresentation(self.imagePost)//pickerview add
        let imageString = imageData!.base64EncodedStringWithOptions(NSDataBase64EncodingOptions())
        message["media_ids"] = imageString
        let requestURL = NSURL(string: "https://upload.twitter.com/1/statuses/update_with_media.json")
        let postRequest = SLRequest(forServiceType: SLServiceTypeTwitter, requestMethod: SLRequestMethod.POST, URL: requestURL, parameters: message)

        postRequest.addMultipartData(imageData, withName: "media", type: nil, filename: nil)
            postRequest.account = twitterAccount

            postRequest.performRequestWithHandler({(responseData: NSData!,urlResponse: NSHTTPURLResponse!,error: NSError!) -> Void in

            if let err = error {
                print("Error : \(err.localizedDescription)")
            }
                print("Twitter HTTP response \(urlResponse.statusCode)")
                self.alertShow("successful")
                })

            }
        }
    })

}

关于ios - 如何在 swift 上使用 SLRequest 类将图像和文本发布到 twitter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31280251/

相关文章:

iOS UIButton 文字显示不正确

swift - 元组作为参数/参数或返回值的问题

ios - 如何不重用 UICollectionView 中的单元格 - Swift

twitter - 从小文本内容(如推文)生成标签

python - 如何获取一周以上的推文?

ios - 缺少对 iOS 应用程序的 64 位支持

android - jQuery 移动按钮按下事件处理缓慢

ios - 将较暗的透明背景设置为图像上的标签

android - 从 Android 应用程序向流行的社交网络分享内容时,如何通过 [我的应用程序] 添加共享?

iOS 字体和(据称)额外的前导