4

我想将 Oauth 2 用于带有 Java 的 Google App Engine 中的应用程序,但我没有找到任何很好的使用示例,如果有人可以帮助我,我将非常感激,这很令人沮丧,没有找到好的示例,thnak你。

4

3 回答 3

10

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

简单来说,步骤是:-

  1. 使用您的应用程序/客户端 ID 和您需要的范围调用身份验证 URL。包括“电子邮件”范围。

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

  3. 最终浏览器会重定向回你的 oauthcallback url,并给你一个授权码
  4. 调用 google 将验证码转换为刷新令牌。这还将返回用户的 google ID 和访问令牌。
  5. 将用户 ID 存储在会话中,以便随后识别用户
  6. 将刷新令牌与 google 用户 ID 一起保存在数据库中

在随后的访问中...

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

您需要知道的一切都在 oauth 游乐场页面中。如果您单击这些按钮,您将看到它正在按照我上面概述的步骤进行操作。

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

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

您需要阅读的两个页面是:- https://developers.google.com/accounts/docs/OAuth2WebServer和https://developers.google.com/oauthplayground/的 oauth 游乐场

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

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

它实际上比一些文档让你相信的要简单得多,就像我说的,恕我直言,泄漏的库没有帮助。

于 2013-09-03T09:24:53.207 回答
1

我正在尝试做完全相同的事情,我同意 - 很难找到一个很好的例子。

不过,我确实找到了这个 youtube 视频,我认为它会有所帮助:https ://www.youtube.com/watch?v=tVIIgcIqoPw 。

它来自 Google,称为 Google API 入门。视频的最后一段处理身份验证。

于 2014-12-18T18:32:19.793 回答
0

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

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

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

于 2013-09-02T15:54:50.907 回答