【问题标题】:Cannot Authorize App Engine with Drive API无法使用 Drive API 授权 App Engine
【发布时间】:2018-05-02 06:26:01
【问题描述】:

我正在尝试获取我的 App Engine 上的云端硬盘文件列表。该应用程序不适用于该应用程序以外的消费者,因此我没有为用户登录实施 OAuth2。

我在 GCP 项目中启用了云端硬盘,并且计算实例是所有者。但是,我收到以下错误:

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 Sheets、Drive、BigQuery 等。请记住,这是一个服务器到服务器的工作。除了应用程序本身之外,没有其他用户正在登录。

最终,我尝试将 Google 表格中的值与 BigQuery 同步(该应用需要 Drive 和 BQ 权限),然后将其推送到 DataStore。

如果您对如何修复它有建议,ELI5。

【问题讨论】:

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


    【解决方案1】:

    查看您正在遵循的教程,有一个note,它说如果您需要在本地测试您的应用程序,您应该使用other credential mechanism。在这种情况下,您必须手动获取并提供服务帐户凭据。 您需要使用服务帐户密钥获取 JSON 文件,然后在您的代码上通过指定私钥文件来使用服务帐户凭据。 还有另一个很好的tutorial,它可能有助于为服务器到服务器的生产应用程序设置身份验证。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-24
    • 1970-01-01
    • 2015-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多