使用java中的谷歌应用引擎中的Oauth 2.0

Joh*_*n B 4 google-app-engine oauth-2.0

我想将Oauth 2用于使用Java的Google App Engine中的应用程序,但我没有找到任何有用的好例子,如果有人能帮助我,我会非常感激,这是令人沮丧的事情,没有找到好的例子,thnak您.

pin*_*yid 10

我的2c是避免oauth2库.当然意见可能会有所不同,但对我来说,它们提供了非常漏洞的抽象,所以你最终会被后门拖入了解oauth.至少对我来说,花一个小时阅读告诉你所有你需要知道的两个页面,并小心避开所有其他页面,会让你到达你想去的地方.

简单来说,步骤是: -

  1. 使用您的应用/客户端ID和所需的范围调用auth URL.包括"电子邮件"范围.

  2. Google将引导用户完成登录,并(如果是第一次通过)授权对话

  3. 最终,浏览器将重定向回您的oauthcallback网址,并传递一个身份验证代码
  4. 致电谷歌将身份验证代码转换为刷新令牌.这还将返回用户的Google ID和访问令牌.
  5. 将用户ID存储在会话中,以便随后识别用户
  6. 将刷新令牌与Google用户ID一起保留在数据库中

随后的访问......

  1. 如果您在会话中拥有Google用户ID,则可以从数据库中检索刷新令牌,并使用它来根据需要生成访问令牌.
  2. 如果您的会话中没有Google用户ID,请执行上述步骤.这一次,谷歌不会提示用户授权(因为它已经被授权),刷新令牌将是空白的(因为你已经存储了一个).

您需要知道的一切都在oauth游乐场页面内.如果单击按钮,您将看到它遵循上面概述的步骤.

然后,您需要处理可能的错误情况,例如

  • 用户拒绝权限
  • 用户撤销权限
  • 谷歌过期刷新令牌(发生了很多)所以你需要重新认证
  • 超时

你需要阅读这两个网页: - https://developers.google.com/accounts/docs/OAuth2WebServer和OAuth园地https://developers.google.com/oauthplayground/

相信我,只要您知道如何形成URL,存储刷新令牌(它只是一个字符串)并解析JSON响应,那么您需要的所有内容都在这些页面上.除了 ...

所有文档都跳过了在会话中保留用户ID的需要,以便您知道访问您的应用程序的用户身份.如果您使用的是AppEngine,您可能会对使用单独的appengine登录的appengine示例代码感到困惑.忽略它.您将使用oauth对用户进行身份验证,因此appengine内容不适用并且有些令人困惑.

它实际上比一些文档更容易让你相信,就像我说的那样,漏洞库没有帮助.

  • @pinoyyid谢谢.我之所以感到困惑的原因是因为我的应用程序目前使用AppEngine UserService API通过调用createLoginURL()和createLogoutURL()以及在会话中添加/删除用户来使用Google联合登录来登录/注销用户.这使我能够使用getCurrentUser(),isUserAdmin()等服务,我试图弄清楚如何使用新的oauth2流来模拟它.我错过了一些明显的东西吗 这可能值得开始它自己的问题...... (2认同)