MapMyFitness API 请求出现错误 403

Posted

技术标签:

【中文标题】MapMyFitness API 请求出现错误 403【英文标题】:Error 403 on MapMyFitness API request 【发布时间】:2016-11-29 09:56:26 【问题描述】:

我正在尝试在 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;
            
    

在标题中是这样的授权代码:

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

这里是关于路由 API 的文档:https://developer.underarmour.com/docs/v71_Workout

Alamofire 错误:

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

我错过了什么吗?谢谢

【问题讨论】:

你能分享你的代码来进行 OAuth2 授权吗?你是用swift3写的吗?我试图找到 swift3 的任何教程,但那里什么都没有:/ @pawisonon 用您的代码和问题提出问题,我会尽力回答您。 这里:***.com/questions/43524410/… 【参考方案1】:

发现问题!

如果您使用 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;
                
        
    

【讨论】:

以上是关于MapMyFitness API 请求出现错误 403的主要内容,如果未能解决你的问题,请参考以下文章

python 用于下载和绘制MapMyFitness数据的代码

通过地理编码 API 的 Web 请求出现错误 407(代理身份验证请求)

Axios 发布请求被烧瓶制作的 api 拒绝。 CORS错误即将出现[重复]

我在单个请求中使用 spotify api 出现错误 429

在 Vercel 上部署的 Nextjs 中的 api 请求出现 504/502 错误

向 API 请求 formData,上传图片时在 axios 中出现“网络错误”