2017-05-30 4 views
0

Ich versuche, die Eventbrite abfragen mit Alamofire, aber es ist ein Fehler in der Form des ErgebnissesAlamofire nicht Authorization-Header auf Eventbrite

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

Meine erste Variante

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

senden Meine zweite Variante

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

Ich habe versucht, diese Anfrage mit Postman zu machen, und alles funktioniert. Wie kann ich es reparieren? Vielen Dank.

Antwort

0

Ich änderte meine Anfrage und es funktioniert für mich. Das Problem war, dass Eventbrite-Token nicht an die Header gesendet werden sollten, sondern zur URL hinzugefügt wurden (was am interessantesten ist, wenn Sie es im Postman testen, dann funktioniert es, wenn das Token an die Header gesendet wird).

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