我正在尝试使用OAuth 2使用最新版本的Report API。但似乎还没有人使用此版本,因此很难找到示例。
我有一个刷新令牌,我用它来生成访问令牌。
private AnalyticsService getAnalyticsService()
{
AuthorizationServerDescription description = new AuthorizationServerDescription();
description.TokenEndpoint = new Uri(login.TokenEndpoint);
description.AuthorizationEndpoint = new Uri(login.AuthorizationEndpoint);
WebServerClient client = new WebServerClient(description, login.ClientId, login.ClientSecret);
OAuth2Authenticator<WebServerClient> authenticator = new OAuth2Authenticator<WebServerClient>(client, authenticate);
AnalyticsService service = new AnalyticsService(authenticator);
return service;
}
private IAuthorizationState authenticate(WebServerClient client)
{
string[] scopes = new string[] { login.ScopeUrl }; // not sure if this is necessary
IAuthorizationState state = new AuthorizationState(scopes) { RefreshToken = login.RefreshToken };
client.RefreshToken(state);
return state;
}
这似乎工作正常:
{
"access_token" : "ya29.AHES6ZQy67SSLHWJWGWcLbLn69yKfq59y6dTHDf4ZoH9vHY",
"token_type" : "Bearer",
"expires_in" : 3600
}
但是,当我提出请求时,我收到了错误消息。例如,这里 是导致错误的查询:
AnalyticsService service = getAnalyticsService();
ManagementResource.ProfilesResource.ListRequest request = service.Management.Profiles.List("~all", "~all");
return request.Fetch();
这是我得到的错误:
{"error":{"errors":[{"domain":"global","reason":"authError","message":"Invalid
Credentials","locationType":"header","location":"Authorization"}],"code":401,"message":"Invalid
Credentials"}}
我尝试过其他查询,提供有效的个人资料ID。但是,我 总是得到401错误,说我没有被授权。我有 无法找到人们使用此代码的示例。它可能是 像URL或其他东西一样简单的东西。不幸的是,我没有 告诉我的方式。我可以获得访问令牌似乎很奇怪,但是我 似乎无法执行任何查询。
答案 0 :(得分:3)
使用OAuth 2,范围更改为:
https://www.google.com/analytics/feeds/
为:
https://www.googleapis.com/auth/analytics.readonly
您收到身份验证错误,因为您尝试在没有适当范围的情况下进行访问。
快速简便的修复。