-2

我通过服务帐户访问了 Google 的 api。

最初,appengine 没有使用服务帐户的选项。不,我发现这个 URL 说我们可以做同样的事情。 https://developers.google.com/api-client-library/python/platforms/google_app_engine#ServiceAccounts

我尝试了该过程无法成功。另一方面,我有两个问题。

  1. 这个 api 如何识别我有帐单的 Google 项目帐户。
  2. 该过程没有使用我们从 Google 控制台获得的私钥。 当我尝试这就是我所看到的。

    Traceback(最近一次调用最后一次):文件“/base/data/home/apps/tempid/cons-main.361607602228494295/main.py”,第 63 行,在 service = build('drive', 'v2', http= http)文件“/base/data/home/apps/tempid/cons-main.361607602228494295/oauth2client/util.py”,第 120 行,在 positional_wrapper 返回包​​装(*args,**kwargs)文件“/base/data/ home/apps/tempid/cons-main.361607602228494295/apiclient/discovery.py”,第 193 行,在构建中,内容 = http.request(requested_url) 文件“/base/data/home/apps/tempid/cons-main .361607602228494295/oauth2client/util.py”,第 120 行,在 positional_wrapper 中返回包装(*args,**kwargs)文件“/base/data/home/apps/tempid/cons-main.361607602228494295/oauth2client/client.py” ,第 405 行,在 new_request 中。_refresh(request_orig) 文件“/base/data/home/apps/tempid/cons-main.361607602228494295/oauth2client/appengine.py”,第 162 行,在 _refresh raise AccessTokenRefreshError(str(e)) AccessTokenRefreshError .

有什么答案吗?请忽略上面的错误,我已经解决了。错误在于定义范围。

我将我的 appengine 应用程序服务帐户 ID 添加到控制台,添加了帐单并且没有使用任何 API 密钥。

 service.files().insert(
        body=body,
        ).execute()

此语句引发异常。

An error occured: <HttpError 403 when requesting https://www.googleapis.com/drive/v2/files?alt=json returned "Daily Limit Exceeded. Please sign up">

我想知道我是否已将我的 appengine 服务帐户添加到 api 控制台的 2-3 个项目中,并且我没有使用任何 api 密钥,该项目的数据将进入何处。——</p>

4

1 回答 1

2

仅某些特定服务支持服务帐户。看来您正在尝试使用 Google Drive SDK,所以我添加了 google-drive-sdk 标签。希望观看该标签的人可以告诉您云端硬盘是否支持服务帐户。

Drive 支持提供的服务帐户 - 请使用您的确切代码更新帖子。实例化对象时是否使用正确的Google Drive 范围AppAssertionCredentials

您可能希望首先在App Engine shell中尝试此操作,以便轻松捕获异常并检查异常对象内部的内容。希望您在尝试获取访问令牌时能够找到服务器返回的错误响应。

您可能必须将 App Engine 服务帐户电子邮件地址(从 App Engine 控制台)添加为 API 控制台项目的团队成员。我们必须这样做才能关联 BigQuery 上的计费/数据权限。

您无需使用 API 控制台中的任何私钥——App Engine 会自动处理服务帐户的创建和密钥管理。

于 2012-09-08T23:50:28.460 回答