无法使用Drive API授权App Engine

时间:2018-03-08 14:08:55

标签: python google-app-engine oauth google-sheets-api

我正在尝试在App Engine上获取Drive文件列表。该应用不适用于应用以外的消费者,因此我不会为用户登录实施OAuth2。

我在GCP项目中启用了Drive,计算实例是所有者。但是,我收到以下错误:

Traceback (most recent call last):
  File "test.py", line 5, in <module>
    credentials = app_engine.Credentials(scopes=SCOPES)
File "/usr/local/lib/python2.7/site-packages/google/auth/app_engine.py",     line 105, in __init__
    'The App Engine APIs are not available.')
EnvironmentError: The App Engine APIs are not available.

以下是我的代码(基于本教程:https://developers.google.com/api-client-library/python/auth/service-accounts):

from google.auth import app_engine
import googleapiclient.discovery

SCOPES = ['https://www.googleapis.com/auth/drive']
credentials = app_engine.Credentials(scopes=SCOPES)

project_id = 'project-id'

service = googleapiclient.discovery.build('drive', 'v3',credentials=credentials)
bucket = service.files().list(project=project_id).execute()
print bucket

我的凭据发生了一些事情,我不确定它是什么。

Tldr;如何授权我的App Engine Flask应用程序(标准版)使用Google API,包括Google表格,云端硬盘,BigQuery等。请记住,这是一个服务器到服务器的工作。没有用户登录除应用程序本身以外的其他用户。

最终,我正在努力让Google表格中的值与BigQuery同步(应用程序需要Drive和BQ权限),然后将其推送到DataStore。

如果您有关于如何修复它的建议,ELI5。

1 个答案:

答案 0 :(得分:1)

查看您正在关注的教程有note表示如果您需要在本地测试应用程序,则应使用other credential mechanism。在这种情况下,您必须手动获取并提供服务帐户凭据。 您需要获取带有服务帐户密钥的JSON文件,然后在您的代码上使用服务帐户凭据,方法是指定私钥文件。 还有一个好的tutorial可能对设置服务器到服务器生产应用程序的身份验证很有用。