【发布时间】: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