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

1

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

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

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

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

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

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

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

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

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

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

  • 0
    Он должен содержать вашу обработку потока аутентификации.
  • 0
    Что это такое? Можете привести пример?
Показать ещё 1 комментарий
Теги:
google-api
google-oauth
google-api-php-client
gmail-api

3 ответа

1
Лучший ответ

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

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

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

2

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

  • 0
    Спасибо, я лучше понимаю, как это работает. Я выбрал и авторизовал Gmail API, обменял код авторизации на токены доступа. Затем я отправил запрос, чтобы получить сообщения и получить список сообщений в формате JSON. Вроде бы все хорошо. Поэтому, если я правильно понимаю, мне нужно обменять код авторизации на токены доступа в моем приложении. Это то, что я скучаю. Но как это можно сделать в моем приложении? Спасибо!
  • 0
    Это то, что вы сделаете для каждого пользователя, чтобы получить доступ к своей собственной почте Gmail, или это одно, чтобы получить доступ к центральной учетной записи?
Показать ещё 2 комментария
0

Несколько месяцев назад я сделал 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'] содержат, например, последнее имя пользователя.

  • 0
    Спасибо за ответ. В обратном вызове есть только этот код? ВАША функция gmail () - это куда вы отправляете запрос в API? (например, если вы хотите получать сообщения?)
  • 0
    Нет, это так: public function oauthgmail2callback () {// Обратный вызов требует APPLIBS.'Google / src / Google'.DS.'autoload.php '; $ client = new Google_Client (); $ Client-> setAuthConfigFile ( '../ Config / client_secrets.json'); $ gmailredirecturi = Router :: url ('/', true). 'Users / oauthgmail2callback'; $ Client-> setRedirectUri ($ gmailredirecturi); $ Client-> addScope (Google_Service_Oauth2 :: PLUS_LOGIN); $ Client-> addScope (Google_Service_Oauth2 :: USERINFO_EMAIL); $ Client-> setAccessType ( 'онлайн');
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню