【发布时间】:2014-12-22 21:20:26
【问题描述】:
我从 https://github.com/google/google-api-php-client 并尝试了下面的代码...
$client->setApplicationName("Analytics");
$client->setDeveloperKey("key");
$service = new Google_Service_Analytics($client);
$optParams = array(
'dimensions' => 'rt:medium');
try {
$results = $service->data_realtime->get(
'ga:profileid',
'rt:activeUsers',
$optParams);
// Success.
} catch (apiServiceException $e) {
// Handle API service exceptions.
$error = $e->getMessage();
}
print_r($results);
显示错误(401)需要登录'
我获得了所需的实时用户所属的 profileid。
那么我该如何实现登录过程(无需访问谷歌网站)?
我试过下面的代码...
$client_id = 'xxxxxxxxxxxxxxx';
$service_account_name = 'xxxxxxxxxxxxxxxx@developer.gserviceaccount.com';
$key_file_location = 'location of .p12 keyfile';
$client = new Google_Client();
$client->setApplicationName("Client_Library_Examples");
if (isset($_SESSION['service_token'])) {
$client->setAccessToken($_SESSION['service_token']);
}
$key = file_get_contents($key_file_location);
$cred = new Google_Auth_AssertionCredentials(
$service_account_name,
array('https://www.googleapis.com/auth/analytics'),
$key
);
$client->setAssertionCredentials($cred);
if($client->getAuth()->isAccessTokenExpired()) {
$client->getAuth()->refreshTokenWithAssertion($cred);
}
$_SESSION['service_token'] = $client->getAccessToken();
echo $_SESSION['service_token'];
$service = new Google_Service_Analytics($client);
$optParams = array(
'dimensions' => 'rt:medium');
try {
$results = $service->data_realtime->get(
'ga:profileid',
'rt:activeUsers',
$optParams);
// Success.
} catch (apiServiceException $e) {
// Handle API service exceptions.
$error = $e->getMessage();
}
print_r($results);
我在这里获取 access_token 和详细信息...但分析数据获取失败,因为错误“权限不足”
当我使用提到的配置文件 ID 从谷歌控制台进行测试时,我得到了结果。
【问题讨论】:
标签: php oauth-2.0 google-api google-oauth google-analytics-api