【问题标题】:Alamofire doesn’t send Authorization header to eventbriteAlamofire 不会向 eventbrite 发送授权标头
【发布时间】:2017-06-02 17:15:11
【问题描述】:

我正在尝试使用 Alamofire 查询 eventbrite,但结果形式存在错误

[Result]: SUCCESS: {
    error = "NO_AUTH";
    "error_description" = "An OAuth token is required for all requests";
    "status_code" = 401;
}

我的第一个变种

 func getAdditionalInfo(_ urlPath: String) {
        DispatchQueue.global(qos: .background).async {
            let headers: HTTPHeaders = [
            "Authorization" : "Bearer 34832udsfsdjkfds" // 34832udsfsdjkfds is fake 
            ]

            Alamofire.request(urlPath, method: .get, parameters: nil, encoding: URLEncoding.default, headers: headers).responseJSON(completionHandler: { (response) in
                debugPrint("EventbriteAPIManager response", response)
                if response.result.error == nil {

                } else {
                    guard let error = response.result.error else { return }
                    debugPrint(error)
                }
            })
        }
    }

我的第二个变种

func getAdditionalInfo(_ urlPath: String) {
    DispatchQueue.global(qos: .background).async {
        let sessionManager = SessionManager.default
        sessionManager.session.configuration.httpAdditionalHeaders = [
            "Authorization" : "Bearer 34832udsfsdjkfds" // 34832udsfsdjkfds is fake 
        ]

        request(urlPath, method: .get, parameters: nil, encoding: URLEncoding.default).responseJSON(completionHandler: { (response) in
            debugPrint("EventbriteAPIManager response", response)
            if response.result.error == nil {

            } else {
                guard let error = response.result.error else { return }
                debugPrint(error)
            }
        })
    }
}

我尝试使用 Postman 发出此请求,一切正常。我该如何解决?谢谢。

【问题讨论】:

    标签: ios swift oauth-2.0 alamofire eventbrite


    【解决方案1】:

    我更改了我的请求,它对我有用。问题是 eventbrite 令牌不应该发送到标头,而是添加到 URL(如果您在邮递员中测试它是最有趣的,那么如果将令牌发送到标头,它就可以工作)。

    private func getEventbriteLocation(_ urlPath: String, success: ((_ eventbriteModel: EventbriteLocationModel) -> Void)?, fail: ((_ error: Error) -> Void)?) {
        DispatchQueue.global(qos: .background).async {
            guard let BackendTokensModel = BackendAPIManager.shared.BackendTokensModel else {
                BackendAPIManager.shared.getTokens(success: { (tokenModel) in
                    self.getEventbriteLocation(urlPath, success: success, fail: fail)
                }, fail: nil)
                return
            }
    
            let rightURL = urlPath.appending("/?token=\(BackendTokensModel.eventbrite)")
            AlamofireManager.shared.request(rightURL, method: .get).responseJSON(completionHandler: { (response) in
                if response.result.error == nil {
                    guard let json = response.result.value as? [String : Any] else { return }
                    guard let eventbriteModel = Mapper<EventbriteLocationModel>().map(JSON: json) else { return }
                    success?(eventbriteModel)
                } else {
                    guard let error = response.result.error else { return }
                    debugPrint(error)
                    fail?(error)
                }
            })
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2016-07-31
      • 1970-01-01
      • 2020-03-28
      • 1970-01-01
      • 2017-07-15
      • 2017-12-08
      • 2018-02-04
      • 2020-05-22
      • 2022-12-24
      相关资源
      最近更新 更多