Swift 尝试使用Parse';s PFTwitterUtils

Swift 尝试使用Parse';s PFTwitterUtils,swift,twitter,parse-platform,Swift,Twitter,Parse Platform,我正试图在Twitter上发帖,但一直收到代码32和消息“无法验证您的身份”。我已经创建了一个应用程序,因为它有写权限,但我仍然无法将其发布 代码如下: let downloadQueue = dispatch_queue_create("tweet.queue", DISPATCH_QUEUE_SERIAL) dispatch_async(downloadQueue, { () -> Void in PFTwitterUtils.linkUser(PFUser.

我正试图在Twitter上发帖,但一直收到代码32和消息“无法验证您的身份”。我已经创建了一个应用程序,因为它有写权限,但我仍然无法将其发布

代码如下:

let downloadQueue = dispatch_queue_create("tweet.queue", DISPATCH_QUEUE_SERIAL)
    dispatch_async(downloadQueue, { () -> Void in

        PFTwitterUtils.linkUser(PFUser.currentUser()!, block: { (success: Bool, error:NSError?) -> Void in
            if var twitter = PFTwitterUtils.twitter() {
                if var screenName = twitter.screenName {
                    var string = "https://api.twitter.com/1.1/statuses/update.json?\(screenName)"
                    println("String: \(string)")
                    if var url = NSURL(string: string) {
                        var request = NSMutableURLRequest(URL: url)
                        request.HTTPMethod = "POST"

                        println("Auth token: \(twitter.authToken)")
                        println("Auth token secret: \(twitter.authTokenSecret)")

                        var boundary = "---------------------------14737809831466499882746641449"
                        var contentType = "application/x-www-form-urlencoded"
                        request.setValue(contentType, forHTTPHeaderField: "Content-Type")



                        var body = NSMutableData ()
                        var strb = "--\(boundary)\r\n"
                        if var strbdata = strb.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false) {
                            body.appendData(strbdata)
                        }

                        var strc = "Content-Disposition: form-data; name=\"status\"\r\n\r\n"
                        if var strcdata = strc.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false) {
                            body.appendData(strcdata)
                        }

                        var strm = "HELLO WORLD \r\n"
                        if var strmdata = strm.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false) {
                            body.appendData(strmdata)
                        }

                        var strd = "--\(boundary)--\r\n"
                        if var strddata = strc.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false) {
                            body.appendData(strddata)
                        }

                        request.HTTPBody = body
                        println("Request before: \(request.allHTTPHeaderFields)")
                        println("BODY: \(request.HTTPBody)")




                        twitter.signRequest(request)

                        //println("Request after: \(request.allHTTPHeaderFields)")

                        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)
                        }
                    }
                }
            }

        })
    })

这是我的代码的Swift版本,通过解析发布tweet并获取其id,以便稍后动态检索(使用动态id):

    if !PFTwitterUtils.isLinkedWithUser(user) {
        PFTwitterUtils.linkUser(user, {
            (succeeded: Bool?, error: NSError?) -> Void in
            if PFTwitterUtils.isLinkedWithUser(user) {
                println("Woohoo, user logged in with Twitter!")
                let verify = NSURL(string: "https://api.twitter.com/1.1/account/verify_credentials.json")
                var request = NSMutableURLRequest(URL: verify!)
                PFTwitterUtils.twitter()!.signRequest(request)
                var response: NSURLResponse?
               var error:NSError? = nil
                var data = NSURLConnection.sendSynchronousRequest(request, returningResponse: &response, error: &error)

                if let jsonObject: AnyObject = NSJSONSerialization.JSONObjectWithData(data!, options: nil, error:&error) {
                    if let dict = jsonObject as? NSDictionary {
                        NSLog("the dict =%@", dict)
                    } else {
                        println("not a dictionary")
                    }
                } else {
                    println("Could not parse JSON: \(error!)")
                }
               // dict = NSJSONSerialization.JSONObjectWithData(data, options:, error: NSErrorPointer())

                               }
        })
    }
    else
    {
        var tweetSTr=NSString()
        tweetSTr="tweeted"
        var bodyStr=NSString(format: "status=%@", tweetSTr.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)!)
            bodyStr=bodyStr.stringByReplacingOccurrencesOfString("!", withString: "%21")


        var url=NSURL(string: "https://api.twitter.com/1.1/statuses/update.json")
        var tweetRequest=NSMutableURLRequest(URL: url!)
        tweetRequest.HTTPMethod="POST"
        tweetRequest.HTTPBody=bodyStr.dataUsingEncoding(NSUTF8StringEncoding)

        PFTwitterUtils.twitter().signRequest(tweetRequest)
        var response: NSURLResponse?
        var error:NSError? = nil
        var data = NSURLConnection.sendSynchronousRequest(tweetRequest, returningResponse: &response, error: &error)

        if let jsonObject: AnyObject = NSJSONSerialization.JSONObjectWithData(data!, options: nil, error:&error) {
            if let dict = jsonObject as? NSDictionary {
                NSLog("myTweetINfo  =%@", dict)
                var tweetID=NSString()
               tweetID=dict.valueForKey("id_str") as String
                NSLog("myJustPostedTweetID = %@", tweetID)

            } else {
                println("not a dictionary")
            }
        } else {
            println("Could not parse JSON: \(error!)")
        }

    }