我有一个Wordpress网站(运行PHP),需要使用google-api向访问者显示自己的分析数据。我想在Javascript中创建图表,所以我需要从PHP代码中获取一个认证令牌,然后将其传递给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代码,这样我就可以使用谷歌分析API从Javascript。
这行不通:
$token = $client->getAccessToken();
Token最终为空。我需要做什么来获取令牌?
这是我的工作代码。服务帐户具有用于生成访问令牌的不同类型的流程。不符合客户端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'];
算出来了:
$client->refreshTokenWithAssertion();
$token = $client->getAccessToken();
$accessToken = $token['access_token'];
第一个答案在2021年仍然有效(谢谢!),但使用过的函数已弃用(尽管仍然可用)
public function getToken() {
$client = new Client(); // use GoogleClient;
$client->setAuthConfig('securejsonfile.json');
$client->addScope('https://www.googleapis.com/auth/cloud-platform');
$client->setApplicationName('appname');
$client->fetchAccessTokenWithAssertion();
return $client->getAccessToken(); //array
}