使用GoogleOAuth2.0实现服务器到服务器应用程序PHP

使用GoogleOAuth2.0实现服务器到服务器应用程序PHP,php,google-analytics,oauth-2.0,google-oauth,Php,Google Analytics,Oauth 2.0,Google Oauth,我一直在完美地遵循这本指南,试图从谷歌获得任何一点信息,但我一直得到403权限不足的问题 我创建了一个服务帐户,它给了我一个带有私钥、项目ID、客户端电子邮件和客户端ID的小json文件,以及许多其他我无法在stack overflow上共享的漂亮东西 然后,我将服务帐户的全域权限委托给特定的IIFC API作用域https://www.googleapis.com/auth/analytics.readonly我是通过Google Apps域的管理控制台完成的 然后,我准备用这一点点php进行

我一直在完美地遵循这本指南,试图从谷歌获得任何一点信息,但我一直得到
403权限不足的问题

我创建了一个服务帐户,它给了我一个带有私钥、项目ID、客户端电子邮件和客户端ID的小json文件,以及许多其他我无法在stack overflow上共享的漂亮东西

然后,我将服务帐户的全域权限委托给特定的IIFC API作用域<代码>https://www.googleapis.com/auth/analytics.readonly
我是通过Google Apps域的管理控制台完成的

然后,我准备用这一点点php进行授权api调用

<?php

require_once __DIR__ . '/vendor/autoload.php';
date_default_timezone_set('America/Los_Angeles');

$user_to_impersonate = 'my_real_email@companyname.com';


putenv('GOOGLE_APPLICATION_CREDENTIALS=/Users/alexfallenstedt/Desktop/Code/sticky-dash/service-account.json');

$client = new Google_Client();
$client->useApplicationDefaultCredentials();
$client->setScopes(['https://www.googleapis.com/auth/analytics.readonly']);
$client->setSubject($user_to_impersonate);

$sqladmin = new Google_Service_SQLAdmin($client);
$response = $sqladmin->instances->listInstances('examinable-example-123')->getItems();
echo json_encode($response) . '\n';

?>

我迷路了。我的整个团队都输了。我们已经经历过多次了。我们如何设置服务器到服务器的通信来获取我们的google analytics reporting api数据?

我最终忘记了测试版,而是提到了两条腿的OAuth的v3

我没有看到任何身份验证令牌。您是否获得了访问和刷新令牌?它们在用户同意后发送给您。@Arbels应用程序代表服务帐户调用Google API,因此用户不直接参与。这个两条腿的o-auth示例失败的步骤是当我的应用程序准备进行授权API调用时。我正在使用服务帐户的凭据从OAuth 2.0身份验证服务器请求访问令牌,但我不断收到权限错误。凭证存储在环境变量
putenv('GOOGLE_应用程序_凭证…')中,在
$client->useApplicationDefaultCredentials()中使用。哦,我指的是最常见的。你确定你有资格使用这种方法吗?
Fatal error: Uncaught exception 'Google_Service_Exception' with message '{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "insufficientPermissions",
    "message": "Insufficient Permission"
   }
  ],
  "code": 403,
  "message": "Insufficient Permission"
 }
}