Использование OAuth2 Gmail токенов для доступа к защищенным источникам - PullRequest
0 голосов
/ 25 апреля 2019

У меня проблемы с выяснением того, как использовать полученные токены для создания нового сеанса 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)


...