2017-05-30 38 views
0

我想查詢使用Alamofire的Eventbrite在線上售票,但有在結果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) 
      } 
     }) 
    } 
} 

我試圖使用郵差來發出這個請求,並且一切正常。我該如何解決它?謝謝。

回答

0

我改變了我的請求,它適用於我。問題是eventbrite令牌不應該被髮送到頭文件,而是被添加到URL中(如果你在postman中測試它,這是最有趣的,然後它在標記被髮送到頭文件時起作用)。

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) 
      } 
     }) 
    } 
}