MapMyFitness API 请求中的错误 403
Error 403 on MapMyFitness API request
我正在尝试对 MapMyFitness
API (Oauth2) 做一些请求。
我可以通过 oauth2 标识获得我的 Authorization Code
,但现在我需要请求某些路由。
请求如下:
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;
}
}
在header中,授权码是这样的:
"Authorization": "Bearer ***********************************"
Here is the doc about the route API : https://developer.underarmour.com/docs/v71_Workout
Alamofire 错误:
responseValidationFailed(Alamofire.AFError.ResponseValidationFailureReason.unacceptableStatusCode(403))
我错过了什么吗?谢谢
问题成立!
如果您使用的是 MapMyFitness API,则必须使用 https://www.mapmyfitness.com/v7.1/
url 进行身份验证,但是当您需要请求路线时,它是 https://api.ua.com/v7.1/
。
此外,您需要在header中添加"api-key"
。
["Authorization": "Bearer ***********************************", "api-key": client_id]
你需要在参数中设置一个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;
}
}
}
我正在尝试对 MapMyFitness
API (Oauth2) 做一些请求。
我可以通过 oauth2 标识获得我的 Authorization Code
,但现在我需要请求某些路由。
请求如下:
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;
}
}
在header中,授权码是这样的:
"Authorization": "Bearer ***********************************"
Here is the doc about the route API : https://developer.underarmour.com/docs/v71_Workout
Alamofire 错误:
responseValidationFailed(Alamofire.AFError.ResponseValidationFailureReason.unacceptableStatusCode(403))
我错过了什么吗?谢谢
问题成立!
如果您使用的是 MapMyFitness API,则必须使用 https://www.mapmyfitness.com/v7.1/
url 进行身份验证,但是当您需要请求路线时,它是 https://api.ua.com/v7.1/
。
此外,您需要在header中添加"api-key"
。
["Authorization": "Bearer ***********************************", "api-key": client_id]
你需要在参数中设置一个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;
}
}
}