Google AnalyticsAPI返回401示例代码

时间:2014-02-05 19:24:24

标签: oauth google-analytics google-oauth google-analytics-api

我正试图从谷歌分析中检索我们的内容实验数据......

我使用以下代码,我的信誉很好,并且已经对此帖进行了审查......

<?php
require_once 'Google/Client.php';
require_once 'Google/Service/Analytics.php';

session_start();

$client = new Google_Client();
$client->setApplicationName('Hello Analytics API Sample');

// Visit https://cloud.google.com/console to generate your
// client id, client secret, and to register your redirect uri.
$client->setDeveloperKey('xxxxx');

$service = new Google_Service_Analytics($client);
try {
$results = $service->management_experiments->listManagementExperiments('xxxx', 'xxxx', 'xxxx');
} catch (apiServiceException $e) {
  print 'There was an Analytics API service error ' . $e->getCode() . ':' . $e->getMessage();

} catch (apiException $e) {
  print 'There was a general API error ' . $e->getCode() . ':' . $e->getMessage();
}
echo '<pre>';
print_r($results);
echo '</pre>';

我正在使用以下示例....

https://developers.google.com/analytics/devguides/config/mgmt/v3/mgmtExperimentsGuide#list

有关我为何获得401未经授权的任何想法?需要登录吗?

1 个答案:

答案 0 :(得分:4)

问题是您还没有授权访问您的数据。既然你只想说自己想要访问自己的数据,我就会看到service account。通过在Google apis console中设置服务帐户,它将允许您访问自己的数据,而无需一直登录和验证代码。

检查以下链接。 在阅读之前开始确保您完成所有这些操作。

https://developers.google.com/analytics/devguides/config/mgmt/v3/mgmtExperimentsGuide#service

  1. 在Google Developers Console中注册您的应用
  2. 授权访问Google Analytics数据。
  3. 创建Google Analytics服务对象
  4. 您已经完成了前两个步骤并直接进入步骤3来创建服务对象。完成步骤1后,您可以在步骤2中使用以下代码。


    以下是如何在php ServiceAccount

    中使用服务帐户的示例

    该示例项目适用于PredictionService而非Google Analytics分析服务。您需要稍微编辑它。

    require_once '../../src/Google/Client.php'; 
    require_once '../../src/Google/Service/Analytics.php'; 
    
    // Set your client id, service account name, and the path to your private key. 
    // For more information about obtaining these keys, visit: 
    // https://developers.google.com/console/help/#service_accounts
    
    const CLIENT_ID = 'INSERT_YOUR_CLIENT_ID'; 
    const SERVICE_ACCOUNT_NAME = 'INSERT_YOUR_SERVICE_ACCOUNT_NAME'; 
    
    
    // Make sure you keep your key.p12 file in a secure location, and isn't 
    // readable by others.
    
    const KEY_FILE = '/super/secret/path/to/key.p12'; 
    
    
    $client = new Google_Client(); 
    $client->setApplicationName("Google Analytics Sample"); 
    
    
    // Load the key in PKCS 12 format (you need to download this from the 
    // Google API Console when the service account was created. 
    
    
    $client->setAssertionCredentials(new Google_AssertionCredentials( 
        SERVICE_ACCOUNT_NAME(Email), 
        array('https://www.googleapis.com/auth/analytics.readonly'), 
        file_get_contents(KEY_FILE)) 
    ); 
    
    
    $client->setClientId(CLIENT_ID); 
    $service = new Google_Service_Analytics($client);
    

    现在您有$service可以与其余的通话一起使用。注意:我没有时间测试代码让我知道它是否工作,我会帮你解决它。