Я тестирую API Gmail .
До сих пор я делал следующее:
Gmail API
. Client ID
client secret
. Итак, теперь, когда я запускаю файл quickstart.php, он дает ссылку. Когда я его открываю, появляется страница авторизации, на которой я разрешаю моему приложению обращаться к API Gmail.
Затем он перенаправляет на URI перенаправления, которые я объявил в настройке (добавив параметр кода).
В адресной строке это выглядит именно так:
HTTP: // локальный / основной / gmail_callback код = my_code
Где главный мой контроллер и gmail_callback пока что просто пустая функция.
И это должно быть правильно, поскольку это мои настройки:
http://localhost
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
Главное – получить доступ к файлу из командной строки, а не из приложения.