2015-09-29 124 views
0

我一直在尋找並嘗試許多不同的解決方案,這個錯誤,我發現不僅本網站,但也有其他人。谷歌管理員403錯誤與PHP

目前我正在嘗試根據參數設置獲取用戶列表或特定用戶詳細信息。從長遠來看,我想創建和修改用戶和組。

我有圖像,但是對於發佈到這個網站是新的,我無法在這裏發佈它們。我可以確認以下事項:

  • 我已經啓用API域
  • (AT)api_studentportal domain.com是一個超級管理員
  • 管理SDK的開發者控制檯
  • 下啓用在「管理我已經加入 '474470900273-asrfjsg0m0ucsfadeit456sg518l1bqa.apps.googleusercontent.com' 到 'admin.directory.group' 和 'admin.directory.user'

我的代碼API客戶端訪問:

date_default_timezone_set('America/Los_Angeles'); 
session_start(); 
set_include_path(get_include_path() . PATH_SEPARATOR . 'google/composer/src'); 
require 'composer/vendor/autoload.php'; 
$keychain = json_decode(file_get_contents('Google.json'), true); 

$service_account_name = $keychain['client_email']; //[email protected]account.com 
$private_key = $keychain['private_key']; 


$client = new Google_Client(); 
$client->setApplicationName("SAMPLE"); 
$service = new Google_Service_Directory($client); 

if (isset($_SESSION['service_token'])) { 
    $client->setAccessToken($_SESSION['service_token']); 
} 

$cred = new Google_Auth_AssertionCredentials( 
    $service_account_name, 
    array('https://www.googleapis.com/auth/admin.directory.user', 'https://www.googleapis.com/auth/admin.directory.group'), 
    $private_key, 
    'notasecret', 
    'http://oauth.net/grant_type/jwt/1.0/bearer', 
    '[email protected]' 
); 
$client->setAssertionCredentials($cred); 



if($client->getAuth()->isAccessTokenExpired()) { 
    $client->getAuth()->refreshTokenWithAssertion($cred); 
} 
$_SESSION['service_token'] = $client->getAccessToken(); 







$service = new Google_Service_Directory($client); 

// Print the first 10 users in the domain. 
$optParams = array(
    'domain' => 'domain.com', 
    'maxResults' => 10, 
    'orderBy' => 'familyName', 
    'viewType' => 'domain_public', 
); 
$results = $service->users->listUsers($optParams); 

然後我得到以下PHP錯誤:

Fatal error: Uncaught exception 'Google_Service_Exception' with message 'Error calling GET https://www.googleapis.com/admin/directory/v1/users?domain=domain.com&maxResults=10&orderBy=familyName&viewType=domain_public: (403) Not Authorized to access this resource/api' in google/composer/src/Google/Http/REST.php:110 Stack trace: #0 google/composer/src/Google/Http/REST.php(62): Google_Http_REST::decodeHttpResponse(Object(Google_Http_Request), Object(Google_Client)) #1 [internal function]: Google_Http_REST::doExecute(Object(Google_Client), Object(Google_Http_Request)) #2 google/composer/src/Google/Task/Runner.php(174): call_user_func_array(Array, Array) #3 google/composer/src/Google/Http/REST.php(46): Google_Task_Runner->run() #4 google/composer/src/Google/Client.php(593): Google_Http_REST::execute(Object(Google_Client), Object(Google_Http_Request)) #5 google/composer in google/composer/src/Google/Http/REST.php on line 110 

回答

1

看來,如果這只是viewType optParam定義。 'viewType'=>'domain_public'無效。一旦刪除,查詢就起作用了。