Python 是否可以使用签名JWT对Google Drive API进行授权调用?
以下内容可在以下网页上阅读: 使用一些Google API,您可以使用签名JWT直接作为承载令牌而不是OAuth 2.0访问令牌进行授权API调用。如果这是可能的,您可以避免在进行API调用之前向Google的授权服务器发出网络请求 如果要调用的API在Google API GitHub存储库中发布了服务定义,则可以使用JWT而不是访问令牌进行授权API调用 我的问题是:是否可以使用签名JWT对Google驱动API进行授权调用?我在地图上搜索了一下,但什么也没找到。如果是的话,有人能给我一个页面链接,说明如何操作(最好是Python)。Python 是否可以使用签名JWT对Google Drive API进行授权调用?,python,google-drive-api,jwt,Python,Google Drive Api,Jwt,以下内容可在以下网页上阅读: 使用一些Google API,您可以使用签名JWT直接作为承载令牌而不是OAuth 2.0访问令牌进行授权API调用。如果这是可能的,您可以避免在进行API调用之前向Google的授权服务器发出网络请求 如果要调用的API在Google API GitHub存储库中发布了服务定义,则可以使用JWT而不是访问令牌进行授权API调用 我的问题是:是否可以使用签名JWT对Google驱动API进行授权调用?我在地图上搜索了一下,但什么也没找到。如果是的话,有人能给我一个页
- 您想使用服务帐户使用驱动器API
- 您希望使用python实现这一点
服务帐户文件
的变量
from google.oauth2 import service_account
from googleapiclient.discovery import build
SERVICE_ACCOUNT_FILE = '###' # Please set the file including JSON values of the credentials of service account.
SCOPES = ['https://www.googleapis.com/auth/drive.metadata.readonly']
credentials = service_account.Credentials.from_service_account_file(SERVICE_ACCOUNT_FILE, scopes=SCOPES)
service = build('drive', 'v3', credentials=credentials)
fileList = service.files().list().execute()
print(fileList)
- 运行此脚本时,将使用驱动器API中的Files:list方法检索服务帐户的Google驱动器中的文件列表
- 服务帐户的Google Drive与您自己的Google Drive不同。如果您想使用服务帐户检索Google驱动器中的文件,则需要与服务帐户共享该文件。请小心这个
如果我误解了您的问题,并且这不是您想要的方向,我很抱歉。目前,Google Drive API不允许在授权承载头中使用JWT令牌。您可以在此处看到允许的API列表:。不幸的是,该驱动器不在列表中,需要额外的步骤来获取驱动器API的访问令牌。您非常感谢,即使它没有具体解决我的问题(使用JWT)。from_service_account_file函数的使用是否隐含了JWT。无论如何,再次感谢。@Patrick谢谢您的回复。对使用服务帐户时,将使用私钥和客户端电子邮件。在本例中,JWT的值由GoogleAPI python客户机的库创建,并使用创建的JWT检索访问令牌。然后,访问令牌可以用于使用GoogleAPI。如果这对您的实际情况没有帮助,我很抱歉。在文档中,他们似乎说可以使用JWT代替access token,并且这有助于避免在进行API调用之前向Google的授权服务器发出网络请求。您似乎说JWT用于获取访问令牌。“对不起,我不明白。”帕特里克谢谢你的回答。我认为你的理解是正确的。检索访问令牌的流程如下所示。1.使用服务帐户的私钥和客户端电子邮件创建JWT值。2.使用JWT检索访问令牌。对于OAuth2,用户需要打开自己的浏览器来检索用于检索访问令牌的授权码。但对于服务帐户,这不是必需的。如果这没有用,我道歉。
from google.oauth2 import service_account
from googleapiclient.discovery import build
SERVICE_ACCOUNT_FILE = '###' # Please set the file including JSON values of the credentials of service account.
SCOPES = ['https://www.googleapis.com/auth/drive.metadata.readonly']
credentials = service_account.Credentials.from_service_account_file(SERVICE_ACCOUNT_FILE, scopes=SCOPES)
service = build('drive', 'v3', credentials=credentials)
fileList = service.files().list().execute()
print(fileList)