首页 > 解决方案 > 如果我使用带有 pydrive 的服务帐户,为什么我需要刷新令牌?

问题描述

我正在使用 pydrive 将一些文件上传到我的驱动器。我使用以下方法进行身份验证:

credentials = ServiceAccountCredentials.from_json_keyfile_name(
    settings.GOOGLE_API_SERVICE_ACCOUNT, scopes
)


pydrive_auth = GoogleAuth()
pydrive_auth.credentials = credentials
drive = GoogleDrive(pydrive_auth)
....

一段时间后,显然 pydrive 尝试刷新访问令牌并尝试找到client_secret.json我的服务器上不存在的一个,因此导致它失败。如果我使用服务帐户,为什么要尝试刷新访问令牌?我认为服务帐户不需要令牌。代码中是否缺少某些内容,或者我是否需要添加此缺少的文件?

标签: pythonoauthgoogle-apipydrive

解决方案


服务帐户不需要刷新令牌。

刷新令牌由用户授予您,这将使您能够在他们不在线时访问他们的数据。

服务帐户是预先授权的,它们始终可以访问,如果您想以这种方式查看,它们在某种程度上是永久的刷新令牌。

gauth = GoogleAuth()
scope = ['https://www.googleapis.com/auth/drive']
gauth.credentials = ServiceAccountCredentials.from_json_keyfile_name(JSON_FILE, scope)
drive = GoogleDrive(gauth)

my_file = drive.CreateFile({'id': 'FILE_ID'}) 

推荐阅读