如何在我的 GWT 应用程序中使用 OAuth?

Posted

技术标签:

【中文标题】如何在我的 GWT 应用程序中使用 OAuth?【英文标题】:How do I use OAuth within my GWT application? 【发布时间】:2011-04-27 09:09:33 【问题描述】:

如何在我的 Java GWT 应用程序中使用 OAuth? 特别是,我想使用此 API 获取我的 Google Aps 域中的用户列表:

http://code.google.com/googleapps/domain/profiles/developers_guide_protocol.html

我知道这听起来像是一个问题,之前可能已经被问过很多次了,但是我找不到任何关于如何实现上述 API 中描述的 OAuth 步骤的 Java 代码。

如果有人可以分享一些代码,或者将我指向正确的文档,我会很高兴。

【问题讨论】:

【参考方案1】:

This tutorial by Matt Raible 无疑是我迄今为止在 OAuth 和 gwt 上见过的最好的。他还有一张很好的描述身份验证流程的图片,我总是能找到帮助。然而,正如马特本人所说,该解决方案并非 100% 可靠,但它仍可能让您参与其中。

考虑到这一点,最好只使用它的纯 javascript 实现。你会发现一个这样的实现right here。如果您选择了这条路,This SO thread 可能会派上用场。

祝你好运。

【讨论】:

【参考方案2】:

您的 GWT 应用程序是什么意思? 你的意思是只有客户端吗?

因为在服务器上您可以轻松使用Scribe OAuth 库。

它有很好的文档并且使用起来相当简单。

【讨论】:

我需要服务器端身份验证,因为我不希望用户能够修改其域的用户列表。但我不确定,如果 Scribe 是我正在寻找的。要使用它,您需要一个 API_KEY 和 API_SECRET。但是,Google 没有为 Apps 配置文件 API 提供此类功能。据我了解,这是因为 scribe 用于 2-legged-auth 而我想要实现的是 3-legged-auth,这意味着,我喜欢用户通过 Google 进行身份验证,而不是我的服务器通过 Google 进行身份验证,对吗? 是的,不幸的是,您是对的(我认为),Scribe 仅对 2 条腿身份验证有帮助。但是,我将对其进行更彻底的研究(尽管您可能已经这样做了),如果发现任何问题,我将编辑我的答案。 在 Google Apps 设置中找到 API_KEY 和 _SECRET。虽然我仍然不确定它是否会起作用,但我认为 Scribe 是最好的图书馆。谢谢。【参考方案3】:

要集成 OAuth 和 GWT,您应该从处理 OAuth 实施的 Scribe 开始:

https://github.com/fernandezpablo85/scribe-java

接下来,您需要创建一个 GWT 小部件,该小部件可以处理用户的交互以获取访问其帐户的权限。然后获取响应令牌,并向外部站点发出 API 请求。

当 scribe 已经为您执行 OAuth 时,重新实现 OAuth 没有意义 - 您只需要这样做。我可能打算使用 GWT Popup 进行身份验证:

http://gwt.google.com/samples/Showcase/Showcase.html#!CwBasicPopup

【讨论】:

以上是关于如何在我的 GWT 应用程序中使用 OAuth?的主要内容,如果未能解决你的问题,请参考以下文章

GWT 主题样式覆盖了我的 css 样式

如何使用 OAuth 2.0 实现 Web 小部件

如何在我的 Spring Boot Security OAuth2 应用程序中仅为某些类启用 OAuth2?

如何将 GWT 连接到 CometD/Bayeux 事件?

如何在GWT中更新后刷新网格?

如何知道我的鼠标在GWT中悬停的是哪个组件? [JAVA]