我在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错误。有什么想法吗?
这可能取决于如何获得access_token
值。
在检索访问令牌后,您要提出此请求多长时间?它的有效期仅为一个小时,因此您可能需要使用刷新令牌获取一个新的。
还有更多关于访问/刷新令牌的资源这个问题:
当Access_token执行时,Google OAuth2 Refresh_token过期
更新:这是一个权限问题。我试图访问一个我没有作用域的数据源,事实上,在主机上访问时,它没有返回403,这让我偏离了正轨。仍然奇怪的是,当在主机服务器上请求时,它没有返回403(它只是返回了一个空的json对象)。。。如果你看到了这个,并且知道为什么,请随时发表评论。我很好奇。