Authorization google

Authorization google

Довольно долго долбаюсь над документацией гугла, но так и не удалось сложить правильной картины о том, как оно работает и тем более объяснить — почему.

Прошу помощи — мне нужно получается чтобы при запросе к скрипту он получал права на запись и считывание таблицы в массив. В общем-то у меня получилось считать и записать. Из браузера. Но вот автоматический токен из скрипта не получается, а каждый раз его вручную обновлять — ну не может быть чтобы гуглы такое сделали.

Раздельные понятия:
1. аккаунт Гугла
2. аккаунт Google Api

Как я понял оно работает:
1. Создаем аккаунт гугла на любую почту
2. В настройках создаем сервисный аккаунт для Google Api
3. Там же создаем еще один аккаунт Google Api и там выбираем web-приложение
4. Скачиваем client_secret.json
5. Ставим либу от google `google-api-php-client-2.1.1`
6. Из этой либы пишем вот такой код:

// config   $client_secret_fpath = '<fpath to client_secret.json>';   $client_secret = json_decode(file_get_contents($client_secret_fpath), true);    // process   // init client   $client = new Google_Client();   $client->setAuthConfig($client_secret_fpath);   $client->addScope(Google_Service_Sheets::SPREADSHEETS);   $client->setIncludeGrantedScopes(true);   $client->setAccessType('offline');

7. Проверяем токен в файле или в сессии, где удобно

$token_fpath = __DIR__ . '/token.ini';   if (!is_file($token_fpath) || (!$access_token = json_decode(file_get_contents($token_fpath), true))):     $auth_url = $client->createAuthUrl();     // ... стопэээээ, ни curl, ни wget не спасут, redirect делать нельзя, т.к. терминал   endif;

Вот тут я теряюсь:
Сгенерированная ссылка — КЛИЕНТСКАЯ. Если на нее перейдет браузер — она работает и дает токен в ответ, после нажатия кнопки «Разрешить» в стандартной форме от гугла же.
Но, при всем своем великолепии — PHP не может НАЖАТЬ эту кнопку, он просто выдает контент страницы вместо редиректа с кодом.

Как тут быть?

Ну и потом…
9. Сохранить токен в файл
10. Поставить проверку токена на истечение срока действия, и сделать запрос на revoke() когда это произойдет…



Источник: toster.ru


Добавить комментарий