OAuth client:
- Client ID
- Client secret
- Scopes
Первым делом необходимо
Просто идем по ссылке https://accounts.google.com/o/oauth2/auth?client_id=[client_id]&redirect_uri=urn:ietf:wg:oauth:2.0:oob&scope=[scopes]&response_type=code
Я выбрал scopes https://www.googleapis.com/auth/gmail.readonly для чтения списка сообщений Gmail.
Засовываем все в браузер и получаем код типа 4/ZZZ
Ок. Наше приложение получило разрешения от пользователя читать его Gmail. Далее стоит выполнить
$> curl \
--request POST \
--data "code=4/ZZZ&client_id=[client_id]&client_secret=[client_secret]&redirect_uri=urn:ietf:wg:oauth:2.0:oob&grant_type=authorization_code" \
https://accounts.google.com/o/oauth2/token
{
"access_token" : "ya29.XXX",
"expires_in" : 3600,
"refresh_token" : "1/XXX",
"scope" : "https://www.googleapis.com/auth/gmail.readonly",
"token_type" : "Bearer"
}
Муки закончились теперь необходимо
$> curl \
-i https://www.googleapis.com/gmail/v1/users/me/messages \
-H "Authorization: Bearer ya29.XXX"
HTTP/2 200
expires: Sun, 12 Aug 2018 20:01:49 GMT
date: Sun, 12 Aug 2018 20:01:49 GMT
cache-control: private, max-age=0, must-revalidate, no-transform
etag: ""
vary: Origin
vary: X-Origin
content-type: application/json; charset=UTF-8
x-content-type-options: nosniff
x-frame-options: SAMEORIGIN
x-xss-protection: 1; mode=block
content-length: 7292
server: GSE
alt-svc: quic=":443"; ma=2592000; v="44,43,39,35"
{
"messages": [
{
"id": "id",
"threadId": "threadId ...
Отсутствие понимания того, какие ключи и в каких случаях использовать, может привести к тому, что код выше будт вообще бесполезен, т.к. задача будет решаться например через "Service account key".