【问题标题】:Twitter API Calls using Parse.com Swift使用 Parse.com Swift 的 Twitter API 调用
【发布时间】:2015-03-29 06:22:49
【问题描述】:

我正在尝试使用带有 swift 语言的 parse 的 sdk 来使用 twitter api 调用。我能够获取用户的访问令牌、密码和屏幕名称,但我正在尝试调用 https://api.twitter.com/1.1/account/verify_credentials.json 并尝试返回正确的 json 数据,但它总是返回 0x0000000000000

这是我正在尝试使用的 Parse.com 指南,它位于 Objective C https://parse.com/docs/ios_guide#twitterusers-requests/iOS 和 这是我的 Swift 代码

if PFTwitterUtils.isLinkedWithUser(PFUser.currentUser()) {

    var token : NSString = PFTwitterUtils.twitter().authToken
    var secret : NSString = PFTwitterUtils.twitter().authTokenSecret
    var usern : NSString = PFTwitterUtils.twitter().screenName
    var credential : ACAccountCredential = ACAccountCredential(OAuthToken: token, tokenSecret: secret)

    var verify : NSURL = NSURL(string: "https://api.twitter.com/1.1/account/verify_credentials.json")!

    var req:NSMutableURLRequest = NSMutableURLRequest(URL: verify)
    req.HTTPMethod = "GET"
    PFTwitterUtils.twitter().signRequest(req)
    var response:AutoreleasingUnsafeMutablePointer<NSURLResponse?> = nil
    var error:NSError? = nil

    var data:NSData = NSURLConnection.sendSynchronousRequest(req, returningResponse: response, error: &error)! as NSData

    if error != nil {
        println(error)
    } else {
        println(response)
    }

}

我不确定我在哪里做错了,因为它总是返回

0x0000000000000

【问题讨论】:

  • 运气好吗?我也有这个问题。
  • 还没有答案,尝试了很多其他代码但没有任何效果,在谷歌群问仍然没有答案

标签: swift twitter parse-platform


【解决方案1】:

我不确定您在寻找什么,但从描述看来,您希望从 Twitter 中返回 JSON。这应该在您的数据变量中。无论如何,如果您还想要回复,这里有一个答案。

    //Synchronous version
    if PFTwitterUtils.isLinkedWithUser(PFUser.currentUser()) {

        var token : NSString = PFTwitterUtils.twitter().authToken
        var secret : NSString = PFTwitterUtils.twitter().authTokenSecret
        var usern : NSString = PFTwitterUtils.twitter().screenName

        var credential : ACAccountCredential = ACAccountCredential(OAuthToken: token, tokenSecret: secret)
        var verify : NSURL = NSURL(string: "https://api.twitter.com/1.1/account/verify_credentials.json")!
        var request : NSMutableURLRequest = NSMutableURLRequest(URL: verify)

        //You don't need this line
        //request.HTTPMethod = "GET"

        PFTwitterUtils.twitter().signRequest(request)

        //Using just the standard NSURLResponse.
        var response: NSURLResponse? = nil
        var error: NSError? = nil
        var data = NSURLConnection.sendSynchronousRequest(request,
            returningResponse: &response, error: nil) as NSData?

        if error != nil {
            println("error \(error)")
            } else {
               //This will print the status code repsonse. Should be 200. 
               //You can just println(response) to see the complete server response
               println((response as NSHTTPURLResponse).statusCode)
               //Converting the NSData to JSON
               let json: NSDictionary = NSJSONSerialization.JSONObjectWithData(data!,
                options: NSJSONReadingOptions.MutableContainers, error: nil) as NSDictionary
               println(json)
            }
        }

您也可以异步执行此操作。用这个替换最后一部分,你也不需要这两个变量

错误和响应

    let queue : NSOperationQueue = NSOperationQueue()
        NSURLConnection.sendAsynchronousRequest(request, queue: queue,
            completionHandler:{(response: NSURLResponse!, data: NSData!, error: NSError!) -> Void in
            if error != nil {
                println("error \(error)")
            } else {
                println((response as NSHTTPURLResponse).statusCode)
                let json: NSDictionary = NSJSONSerialization.JSONObjectWithData(data,
                    options: NSJSONReadingOptions.MutableContainers, error: nil) as NSDictionary
                println(json)
            }

        })

希望能回答所有问题

【讨论】:

    【解决方案2】:

    我的应用上线崩溃了

    PFTwitterUtils.twitter().signRequest(req)
    

    问题是我使用的是最近登录 Twitter 的用户。希望这会有所帮助。

    【讨论】:

    • @nickchuckwalter 我的应用程序也在这条线上崩溃了。你是如何解决这个问题的?
    猜你喜欢
    • 2015-08-30
    • 1970-01-01
    • 2016-11-27
    • 1970-01-01
    • 1970-01-01
    • 2020-12-25
    • 1970-01-01
    • 2021-08-02
    • 2014-01-14
    相关资源
    最近更新 更多