0

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

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 错误,指出我尝试检索响应时。有任何想法吗?

4

2 回答 2

0

这可能取决于您如何获得access_token价值。

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

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

Google OAuth2 Refresh_token 在 Access_token 过期时过期

于 2015-04-27T02:59:00.177 回答
0

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

于 2015-04-27T14:56:52.533 回答