1

我已经在我的 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...

由于我从access_tokenpython-social-auth 提供的开始,如何创建和授权 API 客户端service以供将来的 API 调用使用?

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

4

3 回答 3

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)
于 2016-12-19T08:50:47.023 回答
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

于 2020-10-12T20:07:18.020 回答
0

您可以查看 Google Guide API 提供的示例,例如:通过 gmail 应用程序发送电子邮件,https://developers.google.com/gmail/api/guides/sending

于 2016-12-18T10:05:52.057 回答