我想将 Oauth 2 用于带有 Java 的 Google App Engine 中的应用程序,但我没有找到任何很好的使用示例,如果有人可以帮助我,我将非常感激,这很令人沮丧,没有找到好的示例,thnak你。
3 回答
我的 2c 是避免使用 oauth2 库。当然,意见可能会有所不同,但对我来说,它们提供了非常有漏洞的抽象,所以你最终会被后门拖到理解 oauth 中。至少对我来说,花一个小时阅读告诉你所有你需要知道的两页,并小心避免所有其他的,会让你到达你想去的地方。
简单来说,步骤是:-
使用您的应用程序/客户端 ID 和您需要的范围调用身份验证 URL。包括“电子邮件”范围。
Google 将引导用户完成登录和(如果是第一次)授权对话
- 最终浏览器会重定向回你的 oauthcallback url,并给你一个授权码
- 调用 google 将验证码转换为刷新令牌。这还将返回用户的 google ID 和访问令牌。
- 将用户 ID 存储在会话中,以便随后识别用户
- 将刷新令牌与 google 用户 ID 一起保存在数据库中
在随后的访问中...
- 如果您的会话中有 google 用户 ID,则可以从数据库中检索刷新令牌,并在需要时使用它来生成访问令牌。
- 如果您的会话中没有 google 用户 ID,请执行上述步骤。这一次,谷歌不会提示用户授权(因为它已经被授权),并且刷新令牌将是空白的(因为你已经存储了一个)。
您需要知道的一切都在 oauth 游乐场页面中。如果您单击这些按钮,您将看到它正在按照我上面概述的步骤进行操作。
然后您需要处理可能的错误情况,例如
- 用户拒绝权限
- 用户撤回权限
- 谷歌过期的刷新令牌(发生了很多)所以你需要重新认证
- 超时
您需要阅读的两个页面是:- https://developers.google.com/accounts/docs/OAuth2WebServer和https://developers.google.com/oauthplayground/的 oauth 游乐场
相信我,只要您知道如何形成 URL、存储刷新令牌(它只是一个字符串)并解析 JSON 响应,那么您需要的一切都在这些页面上。除了 ...
所有文档都跳过了在会话中保留用户 ID 的需要,这样您就知道是谁在访问您的应用程序。如果您使用的是 AppEngine,您可能会对使用单独的 appengine 登录的 appengine 示例代码感到困惑。忽略它。您将使用 oauth 对用户进行身份验证,因此 appengine 的内容不适用并且有些混乱。
它实际上比一些文档让你相信的要简单得多,就像我说的,恕我直言,泄漏的库没有帮助。
我正在尝试做完全相同的事情,我同意 - 很难找到一个很好的例子。
不过,我确实找到了这个 youtube 视频,我认为它会有所帮助:https ://www.youtube.com/watch?v=tVIIgcIqoPw 。
它来自 Google,称为 Google API 入门。视频的最后一段处理身份验证。
此页面上列出了几个用于 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-客户端/