Как авторизовать клиентскую службу Python Google API с помощью OAuth2 access_token?

Я реализовал библиотеку python-social-auth для Google OAuth2 в своем проекте Django, и я успешно в состоянии войти пользователей в систему с ним. Библиотека хранит access_token, полученный в ответе на поток Google OAuth2.

Мой вопрос: использование google-api-python-client кажется полагаться на создание и авторизацию объекта credentials, а затем использовать его для создания API service следующим образом:

...
# send user to Google consent URL, get auth_code in response

credentials = flow.step2_exchange(auth_code)
http_auth = credentials.authorize(httplib2.Http())

from apiclient.discovery import build
service = build('gmail', 'v1', http=http_auth)

# use service for API calls...

Поскольку я начинаю с access_token, предоставленного python-social-auth, как мне создать и авторизовать клиент API service для будущих вызовов API?

Изменить: чтобы уточнить, приведенный выше код взят из примеров, предоставленных Google.




Ответы (3)



Вы можете проверить примеры, предоставляемые Google Guide API, например: отправка электронной почты через приложение gmail, https://developers.google.com/gmail/api/guides/sending

person Mohamed Karim Bouaziz    schedule 18.12.2016
comment
К сожалению, весь этот код (который я нашел) предполагает, что у вас есть service: Authorized Gmail API service instance — я не понял, как авторизовать service при наличии access_token. - person Joe; 18.12.2016

Если у вас есть уже обновленный последний токен доступа, срок действия которого не истек, вы можете получить переменную service как:

from googleapiclient.discovery import build
from google.oauth2.credentials import Credentials


creds = Credentials("<ACCESS_TOKEN>")
service = build('gmail', 'v1', credentials=creds)

# Call the Gmail API

person Tanmay Singhal    schedule 12.10.2020