我正试图在我的应用程序中添加推文。我已经实现了登录按钮,并试图通过搜索API (Fabric)访问推文
https://api.twitter.com/1.1/search/tweets.json?q=Himan_dhawan显示我身份验证错误
然后我通过在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
但它仍然显示我坏认证....我陷入了如何在你的应用程序中添加tweet…有谁能告诉我最简单的方法吗?
let authHeaders = oauthSigning.OAuthEchoHeadersToVerifyCredentials()
let urlHeader: AnyObject? = authHeaders[TWTROAuthEchoAuthorizationHeaderKey]
request.allHTTPHeaderFields = urlHeader
旁注:
用于Twitter API。在野外很少使用,对swift的支持也很少。对于swift,为了避免上述问题,我使用了swifter。https://github.com/mattdonnelly/Swifter一旦你提供你的消费者密钥,它就会为你做所有的工作。
当你想使用你自己的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")
这将所需的授权密钥设置为请求上的"授权"头的值,而不是当您在authHeaders字典中传递时,它被设置为"X-Verify-Credentials-Authorization"。
Fabric文档确实有这个,但它比它应该隐藏的稍微多一些