2017-05-17 120 views
0

我一直在按照本指南完美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數據?

+1

我沒有看到任何驗證令牌。你是否獲得了訪問權限和刷新令牌?他們在用戶同意後發送給您。 – Arbels

+0

@Arbels應用程序代表服務帳戶調用Google API,因此用戶不直接參與。這個雙腿o-auth示例失敗的步驟是當我的應用程序準備進行授權的API調用時。我正在使用服務帳戶的憑據從OAuth 2.0 auth服務器請求訪問令牌,但我不斷收到權限錯誤。 憑證存儲在'$ client-> useApplicationDefaultCredentials();'中使用的環境變量'putenv('GOOGLE_APPLICATION_CREDENTIALS ...');'中。 –

+0

哦,我指的是最常見的[服務器端應用](https://developers.google.com/identity/protocols/OAuth2WebServer)。您確定您有資格使用[應用默認憑據](https://developers.google.com/identity/protocols/application-default-credentials)方法嗎? – Arbels

回答

相關問題