如何在swift中认证API



我正试图在我的应用程序中添加推文。我已经实现了登录按钮,并试图通过搜索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文档确实有这个,但它比它应该隐藏的稍微多一些

最新更新