0

我正在努力调用托管在 Google Cloud 中的 API https://apis-explorer.appspot.com/apis-explorer/?base=https%3A%2F%2Finnovative-glass.appspot.com%2F_ah%2Fapi#p/mirror /v1/

据我了解,API 是作为 REST 服务公开的。我需要从 .net 应用程序进行休息服务调用。

我已经完成了 OAuth 身份验证。我按照给出的指导传递 access_token https://developers.google.com/accounts/docs/OAuth2WebServer

我的代码:

UriBuilder uriBuilder = new UriBuilder("https://innovative-glass.appspot.com/_ah/api/mirror/v1/timeline");
string userId = Session["userId"] as string;
var state = Utils.GetStoredCredentials(userId);
NameValueCollection queryParameters = HttpUtility.ParseQueryString(uriBuilder.Query);
queryParameters.Set("access_token", state.AccessToken);
uriBuilder.Query = queryParameters.ToString();

var request = (HttpWebRequest)WebRequest.Create(uriBuilder.ToString());
request.Method = "GET";
var response = (HttpWebResponse)request.GetResponse();

我收到未经授权的异常。我的理解对吗?我做得对吗?

4

2 回答 2

1

似乎云端点不使用接受access_token作为查询参数的 Google API 默认值。根据Discovery 文档,等效的查询参数oauth_token应该使用:

queryParameters.Set("oauth_token", state.AccessToken);

或者(我认为这是更好的解决方案)您还可以设置Authorization请求的标头而不是将令牌添加为查询参数:

request.Headers.Add("Authorization", "Bearer " + state.AccessToken);
于 2013-10-21T13:45:51.340 回答
0

您从哪里获得 AccessToken,您确定它仍然是有效的令牌吗?请记住,访问令牌在生成后约一小时到期,但可以提前撤销。

点击innovative-glass.appspot.com 上的登录按钮给我一个来源不匹配错误,所以看起来您可能也有配置问题。

您是否能够仅使用 API Explorer 使其工作?

于 2013-10-21T13:26:14.483 回答