Intereting Posts
Автозагрузка с пространствами имен в PHP 5.3? как преобразовать динамический php-файл в pdf? Как добавить параметры запроса в помощнике просмотра URL-адреса ZF2 / ZF3 Убедитесь, что браузер отображает все сразу Как настроить правила перезаписи nginx, чтобы CakePHP работал в CentOS? Как сделать флажки HABTM CakePHP по алфавиту сверху вниз в столбцах Как я могу реализовать свой запрос на завивки PHP на Python Как добавить событие Google Calendar с помощью Google Api 3 для любого пользователя в домене? Загрузка изображения на сервер через imagepicker не работает (требуется решение) Повторение нескольких значений флажка в PHP Как заставить построитель запросов выводить свой необработанный SQL-запрос в виде строки? PHP: как вызвать функцию дочернего класса из родительского класса Получение последнего идентификатора вставки из MySql с помощью PHP Как проверить, содержит ли многомерный массив одно значение? Ссылка. Что означает этот символ в PHP?

API Gmail: как получить токен доступа?

Я тестирую API Gmail .

До сих пор я делал следующее:

  • Я создал проект в Google Developers Console
  • Я включил Gmail API .
  • Я создал новый Client ID client secret .
  • В моем скрипте PHP я установил библиотеку PHP Client и выполнил инструкции по настройке в PHP .

Итак, теперь, когда я запускаю файл quickstart.php, он дает ссылку. Когда я его открываю, появляется страница авторизации, на которой я разрешаю моему приложению обращаться к API Gmail.

Затем он перенаправляет на URI перенаправления, которые я объявил в настройке (добавив параметр кода).

В адресной строке это выглядит именно так:

HTTP: // локальный / основной / gmail_callback код = my_code

Где главный мой контроллер и gmail_callback пока что просто пустая функция.

И это должно быть правильно, поскольку это мои настройки:

  • Происхождение Javascript: http://localhost
  • Перенаправление URI: http://localhost/main/gmail_callback

Что мне делать дальше?

Следующим шагом в потоке является обмен авторизационным кодом для токена доступа (который также будет включать токен обновления, если вы запросили автономный доступ). Если вы используете https://developers.google.com/oauthplayground/ для выполнения потока вручную, вы сможете увидеть соответствующие URL-адреса. Существует вызов php-библиотеки, чтобы сделать то же самое, но я лично предпочитаю отправлять свой собственный HTTP, а не использовать библиотеку. Даже если вы используете библиотеку, все равно стоит потратить немного времени, чтобы понять поток HTTP, чтобы вы могли легче отлаживать любые проблемы, с которыми вы сталкиваетесь.

Несколько месяцев назад я сделал Oauth Gmail, у меня получилось что-то вроде этого:

В моей функции обратного вызова:

 if (! isset($_GET['code'])) { $auth_url = $client->createAuthUrl(); return $this->redirect($auth_url); } else { $client->authenticate($_GET['code']); $_SESSION['access_token'] = $client->getAccessToken(); $redirect_uri = Router::url('/', true).'Users/gmail'; return $this->redirect($redirect_uri); } 

И в моей функции gmail ():

 public function gmail(){ require APPLIBS.'Google/src/Google'.DS.'autoload.php'; $client = new Google_Client(); $client->setAuthConfigFile('../Config/client_secrets.json'); $client->addScope(Google_Service_Oauth2::PLUS_LOGIN); $client->addScope(Google_Service_Oauth2::USERINFO_EMAIL); if (isset($_SESSION['access_token']) && $_SESSION['access_token']) { $client->setAccessToken($_SESSION['access_token']); $oauth_service = new Google_Service_Oauth2($client); $data['Profile']['last_name'] = $oauth_service->userinfo->get()->familyName; } } 

$ data ['Profile'] ['last_name'] содержит имя последнего пользователя, например

Надеюсь, это поможет вам.

Хорошо, в основном я ошибался. Следуя этим инструкциям, достаточно получить токены:

https://developers.google.com/gmail/api/quickstart/php

Главное – получить доступ к файлу из командной строки, а не из приложения.