【问题标题】:Get Google SpreadsheetService using OAuth使用 OAuth 获取 Google SpreadsheetService
【发布时间】:2015-02-09 13:27:49
【问题描述】:

我正在开发GWTP项目,以下场景在我的本地开发模式下测试成功:

  1. 通过 OpenID 和 OAuth 进行身份验证和授权
  2. 将 GoogleOAuthParameters 对象保存到 HttpSession。
  3. 另一个操作处理程序重用存储在会话中的 GoogleOAuthParameters 来获取 SpreadsheetService 对象。
  4. 使用 SpreadsheetService 在 GDoc 中操作电子表格。

但是,当部署到 App Engine 时,无法从 GDoc 中读取任何内容,也没有错误/警告,并且返回的列表始终为空。

spreadsheetService = new SpreadsheetService("test");
GoogleOAuthParameters oauthParameters = (GoogleOAuthParameters)sessionProvider.get().getAttribute(HttpSessionProvider.PARAM_OAUTH_PARAMETERS);
spreadsheetService.setOAuthCredentials(oauthParameters, new OAuthHmacSha1Signer());
oauthParameters.setScope(SCOPE_SPREADSHEET);

如果我在初始化 SpreadsheetService 时明确使用如下用户名/密码,我可以从 GDoc 中检索数据。

SpreadsheetService sService = new SpreadsheetService("test");
sService.setUserCredentials("username", "password");

我正在使用 App Engine SDK 1.6.6 和 gdata-spreadsheet-3.0。 请告知我是否做错了什么。 谢谢!

【问题讨论】:

  • 只是一个建议:OAuth 1.0 和 ClientLogin 都是不推荐使用的身份验证方法。我建议您改用 OAuth 2.0。

标签: google-app-engine oauth gdata


【解决方案1】:

该文档适用于 .Net,而不是 Java。如果你想用 Java 开发,我在这里找到了解决方案:Sharing authentication/token between Android Google Client API and SpreadSheet API 3.0

  String token = GoogleAuthUtil.getToken(
          this,
          this.accountName,
          this.scopes);

  SpreadsheetService service = new SpreadsheetService("my-service-name");

  service.setProtocolVersion(SpreadsheetService.Versions.V3);
  service.setHeader("Authorization", "Bearer " + token);

请注意,这不适用于设置令牌并导致 401 对我来说:

  // BAD CODE
  service.setUserToken(token);
  // BAD CODE

【讨论】:

    【解决方案2】:

    该文档包含完整的 Java 示例,展示了如何使用所有支持的机制执行身份验证。建议使用 OAuth 2.0,在以下位置进行了说明:

    https://developers.google.com/google-apps/spreadsheets/#performing_oauth_20

    【讨论】:

    • OAuth 的文档仅在 .Net 中。你如何在 Java 中做到这一点?他们在 .Net 中使用的类似乎在 Java 中不可用。
    猜你喜欢
    • 1970-01-01
    • 2016-01-11
    • 2011-06-27
    • 1970-01-01
    • 2010-12-14
    • 1970-01-01
    • 1970-01-01
    • 2018-02-05
    相关资源
    最近更新 更多