我已在我的Django项目中为Google OAuth2实施了python-social-auth库,并成功地使用它来记录用户。该库存储了Google的OAuth2流程响应中收到的access_token
。
我的问题是:使用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...
由于我从python-social-auth提供的access_token
开始,我该如何创建&授权API客户端service
以进行未来的API调用?
修改:澄清一下,上面的代码来自Google提供的示例。
答案 0 :(得分:4)
鉴于您已拥有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)
答案 1 :(得分:0)
您可以查看Google Guide API提供的示例,例如:通过Gmail应用程序发送电子邮件,https://developers.google.com/gmail/api/guides/sending
答案 2 :(得分:0)
如果您有一个已刷新的最新访问令牌,并且该令牌尚未过期,则可以将service
变量获取为:
from googleapiclient.discovery import build
from google.oauth2.credentials import Credentials
creds = Credentials("<ACCESS_TOKEN>")
service = build('gmail', 'v1', credentials=creds)
# Call the Gmail API