我通过一个服务帐户查询分析API。
我已经写了开发服务器上的代码和它的作品没有问题。 当运行在生产服务器上相同的代码,它抛出这样的:
Google_AuthException:错误刷新的OAuth2令牌,消息: '{ “错误”: “invalid_grant”}'
我试图创建另一个服务帐户,并且行为是相同的。
基于OAuth的认证IETF草案( http://tools.ietf.org/html/draft-ietf-oauth-v2-31 )表示,这对错误:
invalid_grant
The provided authorization grant (e.g. authorization
code, resource owner credentials) or refresh token is
invalid, expired, revoked, does not match the redirection
URI used in the authorization request, or was issued to
another client.
这是我写的代码:
$GA_CLIENT_ID = 'XX.apps.googleusercontent.com';
$GA_APP_EMAIL = 'XX@developer.gserviceaccount.com';
$GA_APP_NAME = 'XX';
$GA_KEY_FILE = 'XX';
// create client object and set app name
$client = new Google_Client();
$client->setApplicationName($GA_APP_NAME); // name of your app
// set assertion credentials
$client->setAssertionCredentials(
new Google_AssertionCredentials(
$GA_APP_EMAIL, // email you added to GA
array('https://www.googleapis.com/auth/analytics.readonly'),
file_get_contents($GA_KEY_FILE) // keyfile you downloaded
));
// other settings
$client->setClientId($GA_CLIENT_ID); // from API console
$client->setAccessType('offline_access'); // this may be unnecessary?
// create service and get data
$service = new Google_AnalyticsService($client);
$result = $service->data_ga->get($ids, $startDate, $endDate, $metrics, $optParams);
return $result;
我也试着在这里提出了一个解决方案( https://groups.google.com/forum/?fromgroups#!topic/gs-discussion/3y_2XVE2q7U%5B1-25%5D使用authenticatedRequest(),而不是Google_AnalyticsService):
$req = new Google_HttpRequest($apiUrl);
$resp = $client::getIo()->authenticatedRequest($req);
$result = json_decode($resp->getResponseBody(), true);
这种替代也适用开发服务器上,而不是在生产一个。
我就这一个完全无能。 有没有人见过这种/固定呢?
谢谢!