Oauth 2.0 Google OAuth2:获取授权用户的凭据

Oauth 2.0 Google OAuth2:获取授权用户的凭据,oauth-2.0,google-api,google-calendar-api,Oauth 2.0,Google Api,Google Calendar Api,我正在尝试设置一个授权配置来使用GoogleAPI,并且正在确定为授权用户获取凭证对象的最佳方法 在这种情况下,我将有一个过期的访问\u令牌和活动的刷新\u令牌。我应该使用它们以某种方式创建凭证对象,以便能够使用以下Python方法查询api: service = build('calendar', 'v3', http=credentials.authorize(Http())) 我在上面找到的文档指向了Google不推荐的oauth2client库的AccessTokenCredentia

我正在尝试设置一个授权配置来使用GoogleAPI,并且正在确定为授权用户获取凭证对象的最佳方法

在这种情况下,我将有一个过期的
访问\u令牌
和活动的
刷新\u令牌
。我应该使用它们以某种方式创建凭证对象,以便能够使用以下Python方法查询api:

service = build('calendar', 'v3', http=credentials.authorize(Http()))
我在上面找到的文档指向了Google不推荐的oauth2client库的
AccessTokenCredentials
类(src:)


这个解决方案似乎是可行的,但我猜目前还没有看到一个不受欢迎的解决方案。有什么想法吗?

以防有另一个rube被文档弄糊涂了,我相信这会有所改进。以下是解决方案:

from django.conf import settings

from auth_creds.models import AuthCred

from apiclient.discovery import build
import google.oauth2.credentials
import google_auth_oauthlib.flow

def query_api(instance):
    SCOPES = 'https://www.googleapis.com/auth/calendar'
    # acquire credentials from persistent storage
    creds = AuthCred.objects.filter(user=instance.user).last()
    # obtain google credentials object
    credentials = google.oauth2.credentials.Credentials(
        refresh_credentials(creds)
    )
    # build api query
    service = build('calendar', 'v3', credentials=credentials)

def refresh_credentials(creds):
    return {
        'token': creds.access_token,
        'refresh_token': creds.refresh_token,
        'token_uri': creds.access_token_uri,
        'client_id': settings.GOOGLE_CLIENT_ID,
        'client_secret': settings.GOOGLE_CLIENT_SECRET,
    }