来自远程客户端的Google Fit Api 403错误

时间:2015-03-26 15:06:53

标签: asp.net https iis-7 google-api google-fit

我在IIS 7上托管了一个使用Google Fit API进行Http调用的Web应用程序,我能够成功发送POST并检索访问令牌,然后我为以下uri执行GET:< / p>

https://www.googleapis.com/fitness/v1/users/me/dataSources/raw:com.google.weight:com.google.android.apps.fitness:user_input/datasets/00-1427209862000000000

以下是我如何构建请求并查看响应:

        request = (HttpWebRequest)WebRequest.Create(uri);
        request.Method = "GET";
        request.ContentLength = 0;
        request.Accept = "application/json";
        request.Headers.Add("Authorization", "Bearer " + dict["access_token"]);
        response = (HttpWebResponse)request.GetResponse();
        respStream = response.GetResponseStream();
        sResponse = new StreamReader(respStream).ReadToEnd();
        respStream.Close();
        Response.Write(sResponse);

当我在主机服务器上的浏览器上运行此应用程序时,我成功获得了一个json对象(它不是我期望的json,但这是另一个问题)。但是,当我尝试在远程客户端上访问该站点时,我在尝试检索响应时收到403错误。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

这可能取决于您获得access_token值的方式。

您在检索访问令牌后多久才提出此请求?它仅在一小时内有效,因此您可能需要使用刷新令牌获取新的。

这个问题有更多关于访问/刷新令牌的资源:

Google OAuth2 Refresh_token expires when Access_token does

答案 1 :(得分:0)

更新:结果是权限问题。我试图访问一个我没有范围的数据源,当它在主机上访问时它没有返回403这一事实让我离开了轨道。还奇怪的是,它在主机服务器上请求时没有返回403(它只是返回一个空的json对象)...如果你看到这个并知道原因,请随意发表评论。我很好奇。