Google Analytics API 在示例代码中返回 401

Posted

技术标签:

【中文标题】Google Analytics API 在示例代码中返回 401【英文标题】:Google Analytics API Returning 401 On Example Code 【发布时间】:2014-03-02 10:26:57 【问题描述】:

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

我正在使用以下代码,我的信誉很好,并且已因这篇文章被审查...

<?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 有任何想法吗?需要登录吗?

【问题讨论】:

您是如何获得授权的?您是否尝试使用绕过登录的服务帐户?您的代码似乎需要通过 Google 登录。 您有机会提供一些示例代码吗?我整天都在这个.. =[ 那么,您是否尝试使用绕过登录的服务帐户或需要通过 Google 登录的代码? 对于服务帐户,请参阅:***.com/questions/9863509/… 【参考方案1】:

问题是您尚未授权访问您的数据。由于您说它只是您想要访问的您自己的数据,我建议您查看service account。通过在Google apis console 中设置服务帐户,您可以访问自己的数据,而无需一直登录和验证代码。

检查以下链接。 阅读之前,请确保您已完成所有操作。

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

    在 Google Developers Console 中注册您的应用程序 授权访问 Google Analytics 数据。 创建分析服务对象

您已跳过前两个步骤,直接进入第 3 步创建服务对象。完成第 1 步后,您可以在第 2 步中使用以下代码。


这里是一个如何在phpServiceAccount中使用服务帐号的例子

该示例项目适用于 PredictionService,而不是 google 分析服务。你需要稍微编辑一下。

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,您可以在其余通话中使用它。注意:我没有时间测试该代码,如果它不起作用,请告诉我,我会帮助您修复它。

【讨论】:

对代码进行了一些修改,一旦完全工作,我将进行编辑,此时遇到另一个错误。

以上是关于Google Analytics API 在示例代码中返回 401的主要内容,如果未能解决你的问题,请参考以下文章

Google Analytics 嵌入 API 服务器端授权未使用 C# 呈现图表

以 XML/JSON 格式返回 Google Analytics Reporting API 结果

如何使用服务帐户通过 .NET C# 访问 Google Analytics API V3?

如何在django管理面板中访问Google Analytics?

Google Analytics PHP示例

无法在 BigQuery 中访问 Google Analytics 的示例数据集