2016-11-29 4 views
0

MapMyFitness API (Oauth2)에 대한 일부 요청을 시도하고 있습니다.MapMyFitness API 요청에서 오류 403

나는 Authorization Code을 oauth2 ID로 얻을 수 있지만 이제는 어떤 경로를 요청해야합니다. 내가 실종

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

:

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

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

Alamofire 오류 : 여기 헤더에

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

이 같은 인증 코드입니다 : 여기

는 요청입니다 뭔가? Thx

+0

당신이 OAuth2를 권한 부여를 만들기위한 코드를 공유 할 수 있습니다 : 여기

내 최종 요청입니다? swift3에 썼습니까? swift3에 대한 튜토리얼을 찾으려고했지만 거기에는 아무것도 없습니다./ – pawisoon

+0

@pawisoon 코드와 문제로 질문을하면 대답을하려고합니다. – Makaille

+0

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

답변

0

문제 발견!

MapMyFitness API를 사용하는 경우 인증을 위해 https://www.mapmyfitness.com/v7.1/ url을 사용해야하지만 경로를 요청해야하는 경우 https://api.ua.com/v7.1/입니다.

또한 헤더에 "api-key"을 추가해야합니다.

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

이며 params에 user_id를 설정해야합니다.

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

이러한 정보는 설명서에 포함되어 있지 않습니다.

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