2013-10-01 2 views
1

Я получаюприложения Google Admin SDK Справочник по API 403 в PHP

Error calling GET https://www.googleapis.com/admin/directory/v1/users/[email protected]: (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 protected]'); 

Я следовал инструкциям https://developers.google.com/admin-sdk/directory/v1/guides/prerequisites и галочка Enable API Access. Я использовал консоль 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», когда все, что я прочитал, говорит, что я включил все в порядке. Есть идеи?

+0

эй стив, вы получите эту работу в PHP в конце концов? – user417669

+0

нет. я решил подождать, пока Google не закончит обновление своих консольных обновлений. Их документация все испорчена: вы идете по кругу, щелкая ссылку на текущие документы, но заканчивая устаревшими документами. Я видел три разных пользовательских интерфейса для настройки учетных записей служб. Понял, что мне просто нужно подождать, пока они не разобрались. – Steve

+0

gotchya, спасибо за ответ. – user417669

ответ

0

Предоставил ли доступ к учетной записи службы к данным областям в панели управления? См. Раздел instructions in the Drive SDK и при необходимости замените его в области администрирования SDK.

+0

Да, я сделал. Немного запутался в старой консоли администратора: он поддерживает привязку к старой документации OAuth 1.0, которая устарела. Все еще не работает. Может потребоваться до тех пор, пока наша консоль не будет обновлена ​​до новой версии. – Steve

+0

см. Также http://stackoverflow.com/questions/16774112/unauthorized-when-calling-goolge-admin-sdk-directory-api – Steve

1

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

Not Authorized to access this resource/api [403] 

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

4

Только что он работает. Вам нужно указать адрес электронной почты администратора, так что 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', 
       '[email protected]' 
    ); 

Также после этого вам необходимо разрешить client_id для области вы запрашиваете от администратора Console-> Безопасность-> Advanced Settings-> Authentication-> Управление OAuth доступа клиента

+0

Спасибо, товарищ !!! – Vico

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