API-интерфейс API SDK для администратора Google Apps 403 в PHP

Я получаю

Error calling GET https://www.googleapis.com/admin/directory/v1/users/email@example.com.com: (403) Not Authorized to access this resource/api 

при запуске

  $client = new Google_Client(); $client->setClientId(GOOGLEAPPS_CLIENT_ID); $client->setApplicationName(SITE_NAME); $key = file_get_contents(APPLICATION_PATH . 'googleapps-privatekey.p12'); $assertion = new Google_AssertionCredentials( GOOGLEAPPS_EMAIL_ADDRESS, // the service account name array('https://www.googleapis.com/auth/admin.directory.user'), // see https://developers.google.com/admin-sdk/directory/v1/guides/authorizing $key); $client->setAssertionCredentials($assertion); $service = new Google_DirectoryService($client); $user = $service->users->get('email@example.com'); 

Я выполнил инструкции https://developers.google.com/admin-sdk/directory/v1/guides/prerequisites и установил флажок Включить доступ к API. Я использовал консоль Google API https://code.google.com/apis/console, чтобы сгенерировать ключ учетной записи службы и получил это нормально.

https://groups.google.com/forum/#!msg/google-api-php-client/LM-mwmuZe7I/IA_K5v1R1UMJ

Я использовал библиотеку Google PHP и выполнил инструкции https://code.google.com/p/google-api-php-client/wiki/OAuth2?hl=no#Service_Accounts, чтобы попытаться получить работу учетных записей служб. Отладка в их коде: я разрешаю штраф и получаю новый токен доступа, как ожидалось, https://developers.google.com/accounts/docs/OAuth2ServiceAccount .

Я не могу понять, почему я получаю сообщение «Не авторизовано для доступа к этому ресурсу / api», когда все, что я прочитал, говорит, что я включил его все в порядке. Есть идеи?

    Просто он работает. Вам нужно указать адрес электронной почты администратора, так что oAuth авторизует вас для этого пользователя. Пытаться

      $assertion = new Google_AssertionCredentials( GOOGLEAPPS_EMAIL_ADDRESS, // the service account name array('https://www.googleapis.com/auth/admin.directory.user'), // see https://developers.google.com/admin-sdk/directory/v1/guides/authorizing $key, 'notasecret', 'http://oauth.net/grant_type/jwt/1.0/bearer', 'admin_user@email.com' ); 

    Кроме того, после этого вам необходимо авторизовать client_id для области, которую вы запрашиваете из консоли администратора, -> Security-> Advanced Settings-> Authentication-> Manage OAuth Client access

    У меня была аналогичная проблема. Я использую библиотеки .NET. В [DriveService][1] отсутствовал параметр при создании поставщика: ServiceAccountUser, который, как представляется, должен быть адресом электронной почты ADMIN. Я пропустил, что это был админ и получал:

     Not Authorized to access this resource/api [403] 

    как только я переключил его на учетную запись администратора, это сработало. Боюсь, я не говорю на PHP, но надеюсь, что это поможет.

    Если вы получите сообщение об ошибке

     Class 'Google_AssertionCredentials' not found 

    вы используете более новые библиотеки, а Google_AssertionCredentials теперь является Google_Auth_AssertionCredentials .

    См. https://github.com/google/google-api-php-client/blob/master/src/Google/Auth/AssertionCredentials.php.

    Предоставили ли вы доступ учетной записи службы к данным областям в вашей панели управления? См. Инструкции в SDK накопителя и, если необходимо, замените их в области администрирования SDK.