Google app engine 使用OAuth获取Google电子表格服务

Google app engine 使用OAuth获取Google电子表格服务,google-app-engine,oauth,gdata,Google App Engine,Oauth,Gdata,我正在开发GWTP项目,以下场景已在我的本地开发模式中成功测试: 获得OpenID和OAuth的身份验证和授权 将GoogleOAuthParameters对象保存到HttpSession中 另一个操作处理程序重用存储在会话中的GoogleOAuthParameters来获取SpreadsheetService对象 使用电子表格服务操作GDoc中的电子表格 然而,当部署到AppEngine时,无法从GDoc读取任何内容,也没有错误/警告,并且返回的列表始终为空 spreadsheetServic

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

  • 获得OpenID和OAuth的身份验证和授权
  • 将GoogleOAuthParameters对象保存到HttpSession中
  • 另一个操作处理程序重用存储在会话中的GoogleOAuthParameters来获取SpreadsheetService对象
  • 使用电子表格服务操作GDoc中的电子表格 然而,当部署到AppEngine时,无法从GDoc读取任何内容,也没有错误/警告,并且返回的列表始终为空

    spreadsheetService = new SpreadsheetService("test");
    GoogleOAuthParameters oauthParameters = (GoogleOAuthParameters)sessionProvider.get().getAttribute(HttpSessionProvider.PARAM_OAUTH_PARAMETERS);
    spreadsheetService.setOAuthCredentials(oauthParameters, new OAuthHmacSha1Signer());
    oauthParameters.setScope(SCOPE_SPREADSHEET);
    
    如果我在初始化电子表格服务时明确使用如下用户名/密码,我可以从GDoc检索数据

    SpreadsheetService sService = new SpreadsheetService("test");
    sService.setUserCredentials("username", "password");
    
    我正在使用AppEngineSDK1.6.6和gdata-spreadsheet-3.0。 请告知我是否做错了什么事。
    谢谢

    文档中有完整的Java示例,展示了如何使用所有支持的机制执行身份验证。建议使用OAuth 2.0,其解释如下:


    文档是针对.Net的,不是针对Java的。如果您想用Java开发,我在这里找到了一个解决方案:

    请注意,这不适用于设置令牌,并导致401 for me:

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

    建议:OAuth 1.0和ClientLogin都是不推荐使用的身份验证方法。我建议您改用OAuth 2.0。OAuth的文档仅在.Net中。在Java中如何做到这一点?他们在.Net中使用的类在Java中似乎不可用。
      // BAD CODE
      service.setUserToken(token);
      // BAD CODE