如何在给定 OAuth2 access_token 的情况下授权 Python Google API 客户端服务?
How to authorize a Python Google API client service given an OAuth2 access_token?
我已经在我的 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.
提供的例子
您可以查看 Google 指南 API 提供的示例,例如:通过 gmail 应用程序发送电子邮件,https://developers.google.com/gmail/api/guides/sending
鉴于您已经拥有 OAuth2 访问令牌,您可以使用 AccessTokenCredentials
class。
The oauth2client.client.AccessTokenCredentials class is used when you have already obtained an access token by some other means. You can create this object directly without using a Flow object.
示例:
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)
如果您有一个已经刷新但未过期的最新访问令牌,那么您可以获得 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
我已经在我的 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.
提供的例子您可以查看 Google 指南 API 提供的示例,例如:通过 gmail 应用程序发送电子邮件,https://developers.google.com/gmail/api/guides/sending
鉴于您已经拥有 OAuth2 访问令牌,您可以使用 AccessTokenCredentials
class。
The oauth2client.client.AccessTokenCredentials class is used when you have already obtained an access token by some other means. You can create this object directly without using a Flow object.
示例:
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)
如果您有一个已经刷新但未过期的最新访问令牌,那么您可以获得 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