【问题标题】:Error:”invalid_grant”, Description:””, Uri:”” while using service account from my local machine错误:“invalid_grant”,描述:“”,Uri:“”,而在我的本地计算机上使用服务帐户
【发布时间】:2021-01-04 14:57:26
【问题描述】:

在本地机器上使用服务帐户时出现以下错误

错误:

invalid_grant”,描述:””,Uri:””。

见下面的代码 -

 string[] scopes = new string[] {
    AnalyticsService.Scope.Analytics
 }; // view and manage your Google Analytics data

 var keyFilePath = @
 "c:\xxxxxxx.p12"; // Downloaded from https://console.developers.google.com
 var serviceAccountEmail = "xxxxx@developer.gserviceaccount.com"; // found https://console.developers.google.com

 //loading the Key file
 var certificate = new X509Certificate2(keyFilePath, "notasecret", X509KeyStorageFlags.Exportable);
 var credential = new ServiceAccountCredential(new ServiceAccountCredential.Initializer(serviceAccountEmail) {
    Scopes = scopes
 }.FromCertificate(certificate));

 var service = new AnalyticsService(new BaseClientService.Initializer() {
    HttpClientInitializer = credential,
    ApplicationName = "Analytics API Sample",
 });
 string profileId = "xxxxxx";
 DataResource.RealtimeResource.GetRequest request = service.Data.Realtime.Get(String.Format("ga:{0}", profileId), "rt:activeUsers");
 RealtimeData feed = request.Execute();

【问题讨论】:

  • 没有代码很难预测原因
  • 检查您电脑上的时间是否正确?

标签: oauth google-api google-oauth service-accounts


【解决方案1】:

invalid_grant 有两个常见原因。

  • 您的服务器时钟与NTP 不同步。 (解决方法:检查服务器时间,如果不正确修复它。)
  • 已超出刷新令牌限制。 (解决方案:您无能为力,他们无法使用更多刷新令牌) 应用程序可以请求多个刷新令牌。例如,这在用户想要在多台机器上安装应用程序的情况下很有用。在这种情况下,需要两个刷新令牌,每个安装一个。当刷新令牌的数量超过限制时,旧令牌将失效。如果应用程序尝试使用无效的刷新令牌,则会返回一个 invalid_grant 错误响应。每对唯一的 OAuth 2.0 客户端的限制为 25 个刷新令牌(请注意,此限制可能会发生变化)。如果应用程序继续为同一客户/帐户对请求刷新令牌,一旦第 26 个令牌发出,之前发出的第 1 个刷新令牌将失效。第 27 个请求的刷新令牌将使之前发布的第 2 个令牌失效,依此类推。

我还阅读了第三种情况,即如果您的请求中未包含 access_type=offline。我自己从来没有遇到过这个问题

【讨论】:

  • 如何将电脑时间与 ntp 服务器同步?
  • 大多数服务器都运行着一个 NTP 守护进程以保持服务器同步。我会先检查一下。
  • 我已将服务器时间与 ntp 服务器时间同步,但我仍然面临这个问题。
  • 您有权访问 Google 分析实时 API 对吗?并且服务帐户已被授予访问您尝试访问的 Google Analytics(分析)帐户的权限?
  • 我看到您正在使用实时 api。但是,实时 API 仍处于测试阶段,您可以访问它吗?您是否尝试过针对报告 api 运行它并查看是否收到相同的错误消息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-19
  • 2013-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-22
相关资源
最近更新 更多