У меня проблемы с выяснением того, как использовать полученные токены для создания нового сеанса OAuth2 и доступа к Gmail API.
Я создал приложение, которое использует Gmail API. После процесса подтверждения Oauth я сохраняю для каждого пользователя их google user id
, access and refresh tokens
, id token
и date
, когда токен истекает.
Теперь у меня есть задача, которая должна синхронизировать некоторые данные и получить доступ к API Gmail.
Добавление токена в OAuthSession не работает.
Как правильно аутентифицировать сеанс? Я прочитал все документы, которые смог найти, но не смог найти ответ на этот чрезвычайно простой вопрос!
import os
from requests_oauthlib import OAuth2Session
from oauthlib.oauth2 import TokenExpiredError
def sync_gmail(user):
client_id = os.getenv('CLIENT_ID')
refresh_url = "https://www.googleapis.com/oauth2/v4/token"
client_secret = os.getenv("CLIENT_SECRET")
redirect_uri = os.getenv("REDIRECT_URI")
authorization_base_url = "https://accounts.google.com/o/oauth2/v2/auth"
token_url = "https://www.googleapis.com/oauth2/v4/token"
scope = [
"https://www.googleapis.com/auth/gmail.metadata",
"https://www.googleapis.com/auth/userinfo.profile"
]
google_credentials = get_user_creds(user)
try:
client = OAuth2Session(client_id, token=google_credentials.access_token, scope=scope, redirect_uri=redirect_uri)
r = client.get('https://www.googleapis.com/gmail/v1/users/' + google_credentials.google_user_id + '/profile')
print(r)
except TokenExpiredError as e:
token = client.refresh_token(refresh_url, **extra)