我一直在按照本指南完美https://developers.google.com/api-client-library/php/auth/service-accounts試圖從谷歌獲得任何一點點的信息,但我繼續得到403 Insufficient Permission
。使用谷歌OAuth 2.0服務器到服務器應用程序PHP
我已經創建了一個服務帳戶,它給了我一個帶有私鑰,項目ID,客戶端電子郵件和客戶端ID以及很多其他漂亮的東西的文件,我無法在這裏分享堆棧溢出。
然後,我將服務帳戶的域名權限授予特定的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 = '[email protected]';
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';
?>
我在控制檯中運行這個php文件,我不斷收到這個錯誤。
Fatal error: Uncaught exception 'Google_Service_Exception' with message '{
"error": {
"errors": [
{
"domain": "global",
"reason": "insufficientPermissions",
"message": "Insufficient Permission"
}
],
"code": 403,
"message": "Insufficient Permission"
}
}
我迷路了。我的整個團隊都迷了路。我們已經經歷了多次。我們如何設置服務器到服務器通信來獲取我們的谷歌分析報告API數據?
我沒有看到任何驗證令牌。你是否獲得了訪問權限和刷新令牌?他們在用戶同意後發送給您。 – Arbels
@Arbels應用程序代表服務帳戶調用Google API,因此用戶不直接參與。這個雙腿o-auth示例失敗的步驟是當我的應用程序準備進行授權的API調用時。我正在使用服務帳戶的憑據從OAuth 2.0 auth服務器請求訪問令牌,但我不斷收到權限錯誤。 憑證存儲在'$ client-> useApplicationDefaultCredentials();'中使用的環境變量'putenv('GOOGLE_APPLICATION_CREDENTIALS ...');'中。 –
哦,我指的是最常見的[服務器端應用](https://developers.google.com/identity/protocols/OAuth2WebServer)。您確定您有資格使用[應用默認憑據](https://developers.google.com/identity/protocols/application-default-credentials)方法嗎? – Arbels