繁体   English   中英

谁能告诉我为什么我在执行此代码时遇到错误的身份验证错误(Swift)?

[英]Can any one tell me why i am getting Bad authentication error while executing this code(Swift)?

我正在使用Fabric SDK在我的应用程序中添加twitter登录按钮。......我在URL中添加了身份验证标头,但在执行时仍显示错误的身份验证错误。 建议我如何在Swift中的URL中添加标头。

     let twitter = Twitter.sharedInstance()
    let oauthSigning = TWTROAuthSigning(authConfig:twitter.authConfig, authSession:twitter.session())

    let authHeaders = oauthSigning.OAuthEchoHeadersToVerifyCredentials()

    let request = NSMutableURLRequest(URL: NSURL(string: "https://api.twitter.com/1.1/search/tweets.json?q=Himan_dhawan")!)
    request.allHTTPHeaderFields = authHeaders
    println(request)
    var session = NSURLSession.sharedSession()

    let task = session.dataTaskWithRequest(request, completionHandler: {data, response, error -> Void in
        if((error) != nil) {
            println(error.localizedDescription)
        }

        var strData = NSString(data: data, encoding: NSASCIIStringEncoding)
        println(strData)
    })

    task.resume()

这与您在请求上设置标头的方式有关。

当想要使用自己的NSMutableURLRequest时,Fabric文档并没有为您提供有关创建OAuth签名标头的完整信息。

let authHeaders = oauthSigning.OAuthEchoHeadersToVerifyCredentials()

返回[NSObject:AnyObject]! 字典为您提供了请求所需的值。 但是,它为标头提供的内容与需要使用NSMutableURLRequest发送的内容不同。

这是您应该为此请求设置标题的方式:

            let twitter = Twitter.sharedInstance()

            let oauthSigning = TWTROAuthSigning(authConfig:twitter.authConfig, authSession:twitter.session())

            let authHeaders = oauthSigning.OAuthEchoHeadersToVerifyCredentials()

            let mutableUrlWithUsableUrlAddress = NSMutableURLRequest(URL: usableUrlForRequest)

            mutableUrlWithUsableUrlAddress.addValue(authHeaders[TWTROAuthEchoAuthorizationHeaderKey] as? String, forHTTPHeaderField: "Authorization")

这会将所需的授权密钥设置为请求中“ Authorization”标头的值,与您传入authHeaders字典时相反,它被设置为“ X-Verify-Credentials-Authorization”。

Fabric文档确实可以解决这个问题,但是比实际情况要复杂得多。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM