给定OAuth2 access_token,如何授权Python Google API客户服务?

Joe*_*Joe 1 python oauth2client google-api-python-client python-social-auth google-oauth2

我已经在我的Django项目中为Google OAuth2 实现了python-social-auth库,并能够成功使用它登录用户。该库将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...
Run Code Online (Sandbox Code Playgroud)

由于我是从access_tokenpython-social-auth提供的开始,因此如何service为未来的API调用创建和授权API客户端?

编辑:澄清一下,上面的代码来自Google提供的示例。

dan*_*elx 5

鉴于您已经具有OAuth2访问令牌,则可以使用AccessTokenCredentials该类。

当您已经通过其他方式获得访问令牌时,将使用oauth2client.client.AccessTokenCredentials类。您可以直接创建此对象,而无需使用Flow对象。

例:

import httplib2
from googleapiclient.discovery import build
from oauth2client.client import AccessTokenCredentials

credentials = AccessTokenCredentials(access_token, user_agent)
http = httplib2.Http()
http = credentials.authorize(http)
service = build('gmail', 'v1', http=http)
Run Code Online (Sandbox Code Playgroud)