1

我正在使用 Google App Engine Identity 访问 Google Apps 用户的 Google Drive API。我在 Google Apps 的管理 API 客户端访问中插入了 GAE URL,范围正确。

AppIdentityCredential credential = new AppIdentityCredential(Arrays.asList(DriveScopes.DRIVE_FILE));
    HttpTransport httpTransport = new NetHttpTransport();
    JsonFactory jsonFactory = new JacksonFactory();
    Drive service = new Drive.Builder(httpTransport, jsonFactory, credential).build();

我收到此错误:

com.google.appengine.repackaged.org.apache.http.impl.client.DefaultRequestDirector handleResponse
WARNING: Authentication error: Unable to respond to any of these challenges: {authsub=WWW-Authenticate: AuthSub realm="https://www.google.com/accounts/AuthSubRequest" allowed-scopes="https://www.googleapis.com/auth/drive,https://www.googleapis.com/auth/docs,https://www.googleapis.com/auth/drive.file,https://www.googleapis.com/auth/drive.readonly,https://www.googleapis.com/auth/drive.metadata.readonly"}
An error occurred: com.google.api.client.googleapis.json.GoogleJsonResponseException: 401 OK
{
  "code" : 401,
  "errors" : [ {
    "domain" : "global",
    "location" : "Authorization",
    "locationType" : "header",
    "message" : "Invalid Credentials",
    "reason" : "authError"
  } ],
  "message" : "Invalid Credentials"
}
  • 是否需要在 Google Apps 的 API 客户端访问中启用 GAE 应用程序?如果没有,我如何授权 GAE 应用程序访问 API 范围?
  • 是否可以在本地/Eclipse 中测试 GAE 身份?
  • 总结一下,有什么问题或不足?
4

3 回答 3

1
  1. 您无法在本地调试 AppEngine 凭据。调试的唯一方法是使用不同的凭据(用于生产的 AppEngine 和本地基于密钥的服务帐户)。它将需要为本地和生产环境编写不同的代码。

  2. 您需要将您的 appengine 服务帐户添加到 Team。如果您为项目使用自定义 Google Apps 域,则需要在自定义域中创建电子邮件组并添加该组。所有服务帐户都应添加到此组。

于 2012-10-10T19:24:51.457 回答
0

考虑添加它尝试对其进行身份验证的范围。我的代码中出现了同样的错误,最终通过添加 drive.file 范围来解决。

于 2012-10-16T16:19:14.583 回答
0

两个重要步骤

  1. 获取应用程序默认凭据服务帐户 JSON 文件。
  2. 使用 JSON 文件的路径设置 GOOGLE_APPLICATION_CREDENTIALS 环境变量。示例:GOOGLE_APPLICATION_CREDENTIALS=c:/myFolder/my.jsonfile

仅供参考: https ://developers.google.com/identity/protocols/application-default-credentials

于 2017-09-26T02:26:56.383 回答