2015-09-01 2 views
2

Я пытаюсь перечислить пользователей в моем домене google, используя библиотеку PHP администратора SDK. Однако я получаю 403 пользователей, когда я пытаюсь перечислить своих пользователей. Это то, что я пытался403 Ошибка при вызове Google Admin SDK

$client = new Google_Client(); 
$client->setApplicationName("My Application"); 
$credential = new Google_Auth_AssertionCredentials(
      $serviceAccount, 
      array('https://www.googleapis.com/auth/admin.directory.user'), 
      $privateKey, 
      'notasecret', 
      'http://oauth.net/grant_type/jwt/1.0/bearer' 
      ); 

$client->setAssertionCredentials($credential); 
if($client->getAuth()->isAccessTokenExpired()) 
{ 
    $client->getAuth()->refreshTokenWithAssertion($credential); 
} 

$service = new Google_Service_Directory($client); 

$optParams = array('domain' => 'mydomain'); 
$results = $service->users->listUsers($optParams); 

Но я получаю эту 403 ошибку

Error calling GET https://www.googleapis.com/admin/directory/v1/users?domain=mydomain: (403) Not Authorized to access this resource/api 

Как указывается в других аналогичных должностях, я также попытался в том числе делегированных администратора, как показано ниже

$credential    = new Google_Auth_AssertionCredentials(
      $serviceAccount,, 
      array('https://www.googleapis.com/auth/admin.directory.user'), 
      $privateKey, 
      'notasecret', 
      'http://oauth.net/grant_type/jwt/1.0/bearer', 
      '[email protected]' 
    ); 

Но это дало следующую ошибку в refreshTokenWithAssertion ($ credential)

Error refreshing the OAuth2 token, message: '{ 
"error" : "unauthorized_client", 
"error_description" : "Unauthorized client or scope in request." 
}' 

Я проверил учетную запись службы, а также включил API в консоли проекта. Кто-нибудь может понять, что я делаю неправильно? Пожалуйста помоги. Я занимаюсь этим некоторое время.

ответ

1

Я нашел решение этой ошибки. Я добавил «sub» в Google_Auth_AssertionCredentials, как показано ниже, и добавил идентификатор клиента и область действия в admin.google.com-> Security-> Manage API access и авторизировал его.

Это

$credential    = new Google_Auth_AssertionCredentials(
     $serviceAccount,, 
     array('https://www.googleapis.com/auth/admin.directory.user'), 
     $privateKey, 
     'notasecret', 
     'http://oauth.net/grant_type/jwt/1.0/bearer', 
     '[email protected]', false 
); 

плюс разрешение на admin.google.com-> Безопасность-> Управление доступом API решить эту проблему. Почему мне пришлось авторизоваться, это другой вопрос.

Смежные вопросы