【问题标题】:Authorization required error during braintree integration in swiftswift中braintree集成期间需要授权错误
【发布时间】:2019-08-06 14:38:14
【问题描述】:

我正在尝试在我的 swift 代码中集成 Braintree 支付方式,但我被困在这里,它因错误而中断

{"error":{"statusCode":401,"name":"Error","message":"需要授权","code":"AUTHORIZATION_REQUIRED"}}

我所做的与 Braintree 文档中提到的完全相同。我不知道它需要哪个授权,当他/她登录时我确实为用户分配了一个授权令牌,我想知道它是否需要授权令牌,但是这段代码中没有这样的参数我应该放置该令牌为支付方式生成客户的令牌。这里执行时的打印语句在日志中给了我这个,“客户端令牌是:

{"error":{"statusCode":401,"name":"Error","message":"Authorization Required","code":"AUTHORIZATION_REQUIRED"}}",我对它的调用有点困惑也。我刚开始做这些事情,所以很抱歉我犯了任何明显的错误。谢谢。

        // TODO: Switch this URL to your own authenticated API

        let clientTokenURL = NSURL(string: "https://braintree-sample- 
         merchant.herokuapp.com/client_token")!
        let clientTokenRequest = NSMutableURLRequest(url: 
         clientTokenURL as URL)
        clientTokenRequest.setValue("text/plain", forHTTPHeaderField: 
         "Accept")
        URLSession.shared.dataTask(with: clientTokenRequest as 
          URLRequest) { (data, response, error) -> Void in
            // TODO: Handle errors
            if let error = error {
                print("Error: \(error.localizedDescription)")

            } else {
                print("in Session")
                let clientToken = String(data: data!, encoding: 
              String.Encoding.utf8)!
                print("Client Token is : \(clientToken)")

            }

            }.resume()
         }

【问题讨论】:

  • 全面披露:我在 Braintree 工作。如需更多帮助,我建议您联系 Braintree 支持。仅根据您的代码 sn-p ,您可能会遇到此异常的原因有很多。为了全面帮助您,我建议您联系支持部门,以便我们查看您的帐户和我们的日志。我看到的一件事是您正在从我们的示例应用程序中检索客户端令牌,这可能与您的特定网关冲突,因为客户端令牌与发出请求的网关不匹配。我建议您联系支持以获得更多帮助。

标签: ios swift authorization token braintree


【解决方案1】:

必须在标头中提供授权令牌以避免此错误。而不是这样,这个版本的代码可以正常工作。

       completionHandler:@escaping (_ response: NSDictionary?, _ error: Error?) - 
         > ()) {



        var headers: HTTPHeaders

        // pass the authToken when you get when user login
        let authToken = getAuthorizationToken()

        if(self.isValidString(object: authToken as AnyObject)) {
            headers = ["Authorization": authToken,
                       "Content-Type": "application/json",
                       "Accept": "application/json"]

         } else {
             headers = ["Content-Type": "application/json"]
         }

        AF.request(apiURL, method: .get, parameters: params as? Parameters, 
        encoding: JSONEncoding.default, headers: headers).validate().responseJSON 
    { 
           response in
            self.handleResposne(response: response) { (response, error) in
                completionHandler(response, error)
            }
        }
     }

【讨论】:

    猜你喜欢
    • 2018-06-30
    • 2017-01-29
    • 2017-01-24
    • 2019-12-05
    • 1970-01-01
    • 1970-01-01
    • 2014-12-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多