【问题标题】:Impersonated User unauthorized in Google Analytics API, using Service Account使用服务帐户在 Google Analytics API 中未经授权的假冒用户
【发布时间】:2016-06-25 16:53:40
【问题描述】:

我正在使用 Google 的 PHP API 客户端,版本 1.1.6。

我们有一个公司 Google 帐户,它控制着我们的许多 Google Analytics 帐户以及我们的 Google Developer 应用程序。

我正在开发一个使用服务帐户设置访问我们的 Google Analytics(分析)的应用。我正在使用此处提供的相同代码:

https://developers.google.com/api-client-library/php/auth/service-accounts#delegatingauthority

$credentials = new Google_Auth_AssertionCredentials(
    $client_email,
    $scopes,
    $private_key,
    'notasecret',                                 
    'http://oauth.net/grant_type/jwt/1.0/bearer',
    $user_to_impersonate,
);

在这种情况下,$client_email 是应用服务帐户客户端 (random-chars@developer.gserviceaccount.com),$user_to_impersonate 是我们公司的 Google 帐户。

几天前一切正常,经过上述身份验证后,我可以通过 API 访问我们所有的 Google Analytics 帐户。截至昨天,我收到此错误:

Error refreshing the OAuth2 token, message: '{
  "error" : "unauthorized_client",
  "error_description" : "Unauthorized client or scope in request."
}'

删除 $user_to_impersonate 参数后,经过身份验证的作品没有错误。但是,我一直在使用 $user_to_impersonate,因为我们有数百个 GA 帐户,并且服务帐户客户端不是它们的允许用户(无论如何,限制为 200 个帐户)。

我找不到任何关于 Google Dev 身份验证工作方式的最新更新,但也许我遗漏了一些东西。

有什么想法吗?

更新:显然这是 Google 整体 API 的一个临时错误,现已修复: https://github.com/google/google-api-php-client/issues/891

更新 2:毕竟不是临时问题。此处列出了解决方案(如果其他人需要)。基本上让您的应用程序永久访问给定的帐户/范围。 https://github.com/google/google-api-php-client/issues/801#issuecomment-171417538

【问题讨论】:

    标签: google-api google-analytics-api google-api-php-client


    【解决方案1】:

    Google 可能更改了服务帐户的处理方式,但现在不再起作用了。它与特定的 Google API 客户端 (PHP) 或特定的 API (Analytics) 无关,但在我看来,它是影响一切的普遍变化。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-21
      • 2012-05-20
      • 1970-01-01
      • 2020-02-22
      • 1970-01-01
      • 2013-08-30
      • 1970-01-01
      • 2018-09-03
      相关资源
      最近更新 更多