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提供的示例。
鉴于您已经具有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)