Google Drive API Python 服务帐户示例

Posted

技术标签:

【中文标题】Google Drive API Python 服务帐户示例【英文标题】:Google Drive API Python Service Account Example 【发布时间】:2021-02-10 16:31:48 【问题描述】:

是否可以使用 Google 服务帐户而不是 OAuth 流程对 Google Drive API 进行身份验证?

Google Drive 的 Python 示例使用 OAuth - Google drive Python Quick start

但是我找不到任何服务帐户示例。

我使用的大多数其他 Google API(翻译、Cloud Vision)确实使用服务帐户,因此我想弃用我的 Google Drive OAuth 代码以保持一致性。

【问题讨论】:

【参考方案1】:

您可以通过以下方式使用 Credentials oauth2 对象,

import json
from google.oauth2.service_account import Credentials

SCOPES = ['https://www.googleapis.com/auth/drive']

service_account_info = json.load(open('service_account.json'))
creds=Credentials.from_service_account_info(
    service_account_info, scopes=SCOPES)

drive_service = build('drive', 'v3', credentials=creds)

【讨论】:

【参考方案2】:

我所知道的最好的服务帐户 python 示例是 Google analytics 的示例

应该是这样的。

from apiclient.discovery import build
from oauth2client.service_account import ServiceAccountCredentials


SCOPES = ['https://www.googleapis.com/auth/drive.readonly']
KEY_FILE_LOCATION = '<REPLACE_WITH_JSON_FILE>'
VIEW_ID = '<REPLACE_WITH_VIEW_ID>'


def initialize_drive():
  """Initializes an service object.

  Returns:
    An authorized service object.
  """
  creds = ServiceAccountCredentials.from_json_keyfile_name(
      KEY_FILE_LOCATION, SCOPES)

  # Build the service object.
  service = build('drive', 'v3', credentials=creds)

  return service

获得驱动服务后,您应该能够使用其他教程中的其余代码。它只是不同的身份验证方法。

请记住创建服务帐户凭据而不是 Oauth 凭据。

【讨论】:

关注这里的问题:***.com/questions/64677744/…

以上是关于Google Drive API Python 服务帐户示例的主要内容,如果未能解决你的问题,请参考以下文章

2小时后Google Drive Python API可恢复上传错误401

Python:从 Google Drive API 获取 zip 文件并加载其内容

Google Drive API 客户端(Python):files().insert() 的权限不足

Google Drive API 客户端(Python):files().insert() 的权限不足

Google Drive API无法找到任何文件夹

无法从 Google Drive API 检索 thumbnailLink