API Google: аутентифицировать запрос с помощью OAuth, но без окна согласия пользователя, затем запрашивать данные Google для определенного имени пользователя или идентификатора пользователя

При чтении этой реализации OAuth 2.0 Authentication (серверная сторона) я заметил, что этот процесс, вероятно, предназначен для сценария, в котором создается приложение, которое позволяет пользователям регистрироваться со своими учетными данными Google, а затем показывать свои сообщения в Google+, видео Youtube и т. Д.

Мне нужна возможность получать данные Google на основе имени пользователя или идентификатора пользователя Google. У меня есть клиент_ид, client_secret и т. Д. От Google – и я готов отправить их по моим запросам.

Шаг 1 кажется ОК. Сделайте запрос, похожий на этот:

https://accounts.google.com/o/oauth2/auth? client_id=1084945748469-eg34imk572gdhu83gj5p0an9fut6urp5.apps.googleusercontent.com& redirect_uri=http%3A%2F%2Flocalhost%2Foauth2callback& scope=https://www.googleapis.com/auth/youtube& response_type=code& access_type=offline 

Что было бы здорово после этого шага, это возможность просто взять код, чтобы я мог аутентифицировать мой запрос (через Google_Client () -> authenticate ($ _ GET ['code']) или аналогичный), а затем обменять его на auth_token.

Я достиг чего-то подобного с Facebook API для PHP для получения профилей / профилей в профиле Facebook, так что в отличие от входа в FB-процесс – никакого согласия пользователя не требуется и не требуется.

Для этого вы должны использовать учетную запись службы . Доступ к API Google с помощью учетной записи службы весьма полезен. Несколько раз вы просто хотите получить доступ к своим собственным данным, а не к данным, принадлежащим другим пользователям. В этом случае нет причин использовать OAuth2 и предлагать пользователю предоставить вам доступ к этой информации, к вашей информации, к которой у вас уже есть доступ. Вот почему мы используем учетную запись службы.

Пример учетной записи Google Service в PHP-клиенте можно найти здесь: Пример

Вы не говорите точно, к какому API вы пытаетесь получить доступ, и мне не нравятся ссылки только на ответы. Итак, вот пример использования API Google Analytics.

 <?php session_start(); require_once 'Google/Client.php'; require_once 'Google/Service/Analytics.php'; /************************************************ The following 3 values an befound in the setting for the application you created on Google Developers console. The Key file should be placed in a location that is not accessable from the web. outside of web root. In order to access your GA account you must Add the Email address as a user at the ACCOUNT Level in the GA admin. ************************************************/ $client_id = '1046123799103-nk421gjc2v8mlr2qnmmqaak04ntb1dbp.apps.googleusercontent.com'; $Email_address = '1046123799103-nk421gjc2v8mlr2qnmmqaak04ntb1dbp@developer.gserviceaccount.com'; $key_file_location = '629751513db09cd21a941399389f33e5abd633c9-privatekey.p12'; $client = new Google_Client(); $client->setApplicationName("Client_Library_Examples"); $key = file_get_contents($key_file_location); // seproate additional scopes with a comma $scopes ="https://www.googleapis.com/auth/analytics.readonly"; $cred = new Google_Auth_AssertionCredentials( $Email_address, array($scopes), $key ); $client->setAssertionCredentials($cred); if($client->getAuth()->isAccessTokenExpired()) { $client->getAuth()->refreshTokenWithAssertion($cred); } $service = new Google_Service_Analytics($client); 

У меня есть учебник, который сочетается с этим кодом, который можно найти здесь. Учетная запись службы Google PHP