2016-11-29 2 views
0

ich versuche, eine Anfrage auf der MapMyFitness API (Oauth2) zu tun.Fehler 403 auf MapMyFitness API Anfrage

Ich kann meine Authorization Code mit der oauth2-Kennzeichnung bekommen, aber jetzt muss ich eine Route anfordern. Hier

ist die Anfrage:

Alamofire.request(self.oauthClient.baseURL() + "workout/", 
         method: .get, 
         parameters: nil, 
         headers: authorizationHeader 
        ) 
     .validate() 
     .responseData { [weak self] (response) in 
      switch response.result { 
      case .success(let data): 
       do { 
        let jsonResponse = try JSON(data: data)    
        success(items); 
        self?.isLoading = false; 
       } catch { 
        self?.isLoading = false; 
        failed(nil) 
       } 
       break; 
      case .failure(let error): 
       print(error); 
       self?.isLoading = false; 
       failed(error) 
       break; 
      } 
    } 

Im Header hier ist der Autorisierungscode wie folgt aus:

"Authorization": "Bearer ***********************************" 

Here is the doc about the route API : https://developer.underarmour.com/docs/v71_Workout

Alamofire Fehler:

responseValidationFailed(Alamofire.AFError.ResponseValidationFailureReason.unacceptableStatusCode(403))

i Fehle etwas ? Thx

+0

können Sie Ihren Code teilen für OAuth2 Genehmigung zu machen? Hast du es in swift3 geschrieben? Ich habe versucht, ein Tutorial für swift3 zu finden, aber es gibt nichts da draußen:/ – pawisoon

+0

@pawisoon Stellen Sie eine Frage mit Ihrem Code und Problem, und ich werde versuchen, Ihnen zu antworten. – Makaille

+0

hier: http://stackoverflow.com/questions/43524410/oauth2-for-mapmyrun-using-swift-3 – pawisoon

Antwort

0

Problem gegründet!

Wenn Sie MapMyFitness API verwenden, müssen Sie https://www.mapmyfitness.com/v7.1/ URL für die Authentifizierung verwenden, aber wenn Sie Route anfordern müssen, ist es https://api.ua.com/v7.1/.

Darüber hinaus müssen Sie in Ihrer Kopfzeile die "api-key" hinzufügen.

["Authorization": "Bearer ***********************************", "api-key": client_id] 

und Sie müssen eine user_id in params setzen.

var params = ["user" : self.userID, field_set: "time_series"] as [String : Any] 

Diese Informationen sind nicht in der Dokumentation enthalten.

Hier ist meine letzte Bitte:

self.authorizationHeader.updateValue(self.clientID, forKey: "api-key") 
var params = ["field_set" : "time_series", 
       "user" : self.userID] as [String : Any] 

Alamofire.request(self.url + "/workout/", 
          method: .get, 
          parameters: params, 
          headers: self.authorizationHeader 
      ) 
      .validate() 
      .responseData { [weak self] (response) in 
       switch response.result { 
       case .success(let data): 
        do { 
         let jsonResponse = try JSON(data: data) 
         success(items); 
        } catch { 
         failed(nil) 
        } 
        break; 
       case .failure(let error): 
        print(error); 
        failed(error) 
        break; 
       } 
     } 
    }