我正在使用Fabric SDK在我的应用程序中添加twitter登录按钮....... 我在我的URL中添加了身份验证标头,但在执行时仍显示出身份验证错误。 建议我如何在Swift中的URL中添加Header。
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()
答案 0 :(得分:0)
这与您在请求中设置标题的方式有关。
Fabric文档在您想要使用自己的NSMutableURLRequest时,并不能完全了解如何创建OAuth签名标题。
let authHeaders = oauthSigning.OAuthEchoHeadersToVerifyCredentials()
返回[NSObject:AnyObject]! dictionary为您提供请求所需的值。但是,它为标题提供的内容与需要使用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")
这会将所需的授权密钥设置为"授权"的值。请求中的标题,与您传入authHeaders字典时相反,它被设置为" X-Verify-Credentials-Authorization"。
Fabric doc's确实进入了这个问题,但它比它应该稍微隐藏得多。