我有一个Wordpress网站(运行PHP),需要使用google-api向访问者显示自己的分析数据。我想用Javascript创建图表,所以我需要从PHP代码中获取一个auth令牌,然后将其传递给Javascript代码。我无法弄清楚如何获得身份验证令牌。
到目前为止,我的代码与使用我的服务帐户相似: https://github.com/google/google-api-php-client/blob/master/examples/service-account.php
我的代码:
$client = new Google_Client();
$client->setAuthConfig($credentialsFilePath);
$client->addScope('https://www.googleapis.com/auth/analytics.readonly');
$client->setApplicationName("GoogleAnalytics");
$analytics = new Google_Service_Analytics($client);
$ga = $analytics->data_ga;
$start = date('Y-m-d', strtotime('-7 days'));
$end = date('Y-m-d');
$views = $ga->get('ga:'.$myAnalyticsId,
$start,
$end,
'ga:pageviews,ga:sessions,ga:newUsers',
array(
'dimensions' => 'ga:date',
'sort' => 'ga:date'
));
一切正常,我可以连接到Google_Service_Analytics并获取分析数据。但是,我无法弄清楚如何使用我的凭据获取服务访问令牌,我可以将其移交给Javascript代码,以便我可以使用Javascript中的Google AnalyticsAPI。
这不起作用:
$token = $client->getAccessToken();
令牌最终变为空。我需要做什么才能获取令牌?
答案 0 :(得分:2)
想出来:
$client->refreshTokenWithAssertion();
$token = $client->getAccessToken();
$accessToken = $token['access_token'];
答案 1 :(得分:2)
这是我的有效代码。 服务帐户具有用于生成访问令牌的不同类型的过程。 它不遵循oauth客户端api。
//include_once 'vendor/autoload.php';
$credentialsFilePath = 'test.json';
$client = new Google_Client();
$client->setAuthConfig($credentialsFilePath);
$client->addScope('https://www.googleapis.com/auth/analytics.readonly');
$client->setApplicationName("GoogleAnalytics");
$client->refreshTokenWithAssertion();
$token = $client->getAccessToken();
print_r($token);
$accessToken = $token['access_token'];
答案 2 :(得分:0)
第一个答案在 2021 年仍然有效(谢谢!),但不推荐使用一个使用过的函数(尽管仍然可用) 这对我有用
public function getToken() {
$client = new Client(); // use Google\Client;
$client->setAuthConfig('securejsonfile.json');
$client->addScope('https://www.googleapis.com/auth/cloud-platform');
$client->setApplicationName('appname');
$client->fetchAccessTokenWithAssertion();
return $client->getAccessToken(); //array
}