Бортовой журнал Ктулху

Авторизация в Google Chat API. Часть №1

Как авторизоваться используя oAuth 2 в Google Chat API.

Для этого необходим некий внешний ресурс, на который будет отправляться код авторизации, который, в свою очередь, будет использовться для получения кода доступа.

Например, https://yoursite.dev/oauth, зарегистрировать этот ресурс в своем приложении. Как это сделать - можно посмотреть статью по Gmail API, там я описывал свой первый опыт с этим. Авторизация в чате на 99% схожа с авторизацией в Gmail.

 

Когда приложение уже создано и настроено, очередь за авторизацией.

Первый этап - получить код, который потом используется для получения refresh token.

Для этого достаточно сформировать GET запрос и выполнить его в браузере.

https://accounts.google.com/o/oauth2/auth? client_id=%yer_client_id%&redirect_uri=https://yoursute.dev/oauth& scope=https://www.googleapis.com/auth/chat&response_type=code& include_granted_scopes=true&access_type=offline&login_hint=%yer_email%&prompt=consent&state=qwerty

Если все настроено правильно, на указанный url придет специальный код типа такого:
--

{"code":"4/0AWgavXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}

--

Страница должна для удобства содержать что-то вроде

var_dump($_GET);

Иначе, код придется выковыривать из строки запроса.

Далее, полученный код используем в следующем запросе. Я использовал для этого Curl. Полученный выше код подставить туда где ХХХ

curl -d \
--request POST \
--data "code=4/0AWXXXXXXXXXXXXXXXX&redirect_uri=https://yoursite.dev/oauth&grant_type=authorization_code" \
https://accounts.google.com/o/oauth2/token

Если в ответе вы видите что-то вроде этого:

{

  "access_token": "ххххххххххх",

  "expires_in": 3599,

  "refresh_token": "хххххххххх",

  "scope": "https://www.googleapis.com/auth/chat https://www.googleapis.com/auth/chat.spaces.readonly https://www.googleapis.com/auth/chat.spaces",

  "token_type": "Bearer"

}

значит жизнь авторизация удалась.

Продолжение следует...