【问题标题】:Can any one tell me why i am getting Bad authentication error while executing this code(Swift)?谁能告诉我为什么在执行此代码(Swift)时出现错误的身份验证错误?
【发布时间】:2015-10-17 14:52:30
【问题描述】:

我正在使用 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()

【问题讨论】:

    标签: ios swift http-headers basic-authentication restful-authentication


    【解决方案1】:

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

    当您想要使用自己的 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 doc's 确实参与其中,但它比应有的稍微隐藏了一些。

    【讨论】:

      猜你喜欢
      • 2023-02-08
      • 2021-01-14
      • 2016-04-25
      • 2014-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-16
      • 2020-07-07
      相关资源
      最近更新 更多