我正在使用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
答案 0 :(得分:-1)