Ошибка 403 по запросу API MapMyFitness
Я пытаюсь сделать запрос на MapMyFitness
API (Oauth2).
Я могу получить Authorization Code
с идентификацией oauth2, но теперь мне нужно запросить какой-то маршрут.
Вот запрос:
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;
}
}
В заголовке приведен код авторизации:
"Authorization": "Bearer ***********************************"
Вот документ об API маршрута: https://developer.underarmour.com/docs/v71_Workout
Ошибка Alamofire:
responseValidationFailed (Alamofire.AFError.ResponseValidationFailureReason.unacceptableStatusCode (403))
Я что-то пропустил? Спасибо
1 ответ
Проблема найдена!
Если вы используете MapMyFitness API, вы должны использовать https://www.mapmyfitness.com/v7.1/
URL для аутентификации, но когда вам нужно запросить маршрут, это https://api.ua.com/v7.1/
,
Более того, вам нужно добавить в шапку "api-key"
,
["Authorization": "Bearer ***********************************", "api-key": client_id]
и вам нужно установить user_id в params.
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;
}
}
}