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

时间:2013-09-02 15:18:20

标签: google-app-engine oauth-2.0

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

3 个答案:

答案 0 :(得分:10)

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

简单来说,步骤如下: -

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

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

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

    1. 如果您的会话中有Google用户ID,则可以从数据库中检索刷新令牌,并使用它来根据需要生成访问令牌。
    2. 如果您的会话中没有Google用户ID,请执行上述步骤。这一次,谷歌不会提示用户授权(因为它已经被授权),刷新令牌将是空白的(因为你已经存储了一个)。
    3. 您需要知道的一切都在oauth游乐场页面内。如果单击按钮,您将看到它遵循上面概述的步骤。

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

      • 用户拒绝权限
      • 用户撤销权限
      • 谷歌已过期刷新令牌(发生了很多),因此您需要重新验证
      • 超时

      您需要阅读的两页是: - https://developers.google.com/accounts/docs/OAuth2WebServerhttps://developers.google.com/oauthplayground/

      的oauth游乐场

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

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

      它实际上比某些文档更容易让您相信,就像我说的那样,漏洞库无法帮助。

答案 1 :(得分:1)

我正在努力做同样的事情并且我同意 - 要找到一个很好的例子是非常困难的。

我确实找到了这个youtube视频但我觉得它会有所帮助:https://www.youtube.com/watch?v=tVIIgcIqoPw

来自Google,它被称为Google API入门。视频的最后一部分涉及身份验证。

答案 2 :(得分:0)

此页面上列出了几个适用于Java的OAuth 2客户端和服务器库:http://oauth.net/2/

以下是使用Apache Otlu的快速入门文档:https://cwiki.apache.org/confluence/display/OLTU/OAuth+2.0+Client+Quickstart

如果您要访问Google API(作为客户端),您可以使用Google客户端库for Java,它可以执行OAuth以及API设置:https://code.google.com/p/google-api-java-client/