我想通过Python 37中的GAE(标准)在Team Drive中写入文件。我将其服务帐户添加到了Team Drive成员中。但是我无法使用默认的App Engine凭据来编写。
我无法使用App Engine API,因为它们在GAE Standard for Python 37中不可用。
from google.auth import default
from googleapiclient import discovery
from googleapiclient.http import MediaIoBaseUpload
def upload_file_to_teamdrive(fd, file_name, team_drive_id, mime_type='application/text'):
scopes = ['https://www.googleapis.com/auth/cloud-platform', 'https://www.googleapis.com/auth/drive']
# How to get GAE Credentials ?
credentials, project = default(scopes=scopes)
drive = discovery.build('drive', 'v3', credentials=credentials)
media = MediaIoBaseUpload(fd, mimetype=mime_type)
drive.files().create(
supportsTeamDrives=True,
media_body=media,
body={
'parents': [team_drive_id], # ID of the Team Drive,
'name': file_name
},
fields='id'
).execute()
此代码抛出403响应:
googleapiclient.errors.HttpError:https://www.googleapis.com/upload/drive/v3/files?supportsTeamDrives=true&fields=id&alt=json&uploadType=multipart返回“权限不足:请求的身份验证范围不足。” >
从GAE写入云端硬盘的最佳方法是什么?我的GAE如何通过其服务帐户进行身份验证?
感谢您的帮助。
答案 0 :(得分:0)
App Engine环境公开的凭据只能授权Google Cloud范围,而不能授权任何其他Google API范围,例如https://www.googleapis.com/auth/drive
。
您需要使用完整服务帐户密钥(最好使用KMS以获得安全性)来访问这些API。
您可以查看我创建的库,该库始终用于连接到Google API easygoogle