4

我目前正在使用 Spring Social 和 Spring Security 开发 Web 应用程序。在 Web 应用程序中,特定用户可以使用ProviderSignInController. 当工作人员成功通过 FB 进行身份验证时,他们也会以编程方式使用 Spring Security 登录我的本地 web 应用程序。这个概念改编自spring-social-showcase。然后,Spring Social 允许经过身份验证的用户创建事件,这些事件也是在 facebook 页面上创建的。

现在我想编写一个 android 应用程序,使用户能够通过我的 Web 应用程序发布到我的留言簿并查看/创建事件。我现在的问题是如何实现我的安卓应用程序的登录。在我的 Web 应用程序中,UsersConnectionRepository将 facebook 帐户映射到本地帐户。我可以像从 Web 应用程序一样,简单地重用这些数据并从我的 android 应用程序登录吗? 添加重定向到 facebook 登录页面ProviderSignInController的路径映射。http://_webapp_/signin/facebook这可以简单地通过 android 上的 WebView 来完成吗?

看着spring-android-facebook-client我很困惑。此示例似乎手动管理 OAuth 身份验证。但是我还没有弄清楚,当后台没有其他 Web 应用程序已经管理身份验证时,这是要走的路还是只是实现它的另一种可能性。

欢迎任何反馈。谢谢。

吉普

4

1 回答 1

7

现在我想编写一个 android 应用程序,使用户能够通过我的 Web 应用程序发布到我的留言簿并查看/创建事件。

Android 客户端需要一种方法来登录您的 Web 应用程序,以便发布到安全的 RESTful 端点,而 OAuth 是执行此操作的好方法。Spring Security OAuth 是 Spring Security 的扩展,可以允许第三方移动或 Web 客户端与您的网站进行交互。

配置好 OAuth 服务器后,您可以在 Android 客户端中使用 Spring Social 创建自定义提供程序,以建立到您的网站的 OAuth 连接。在这种情况下,您的用户将使用他们的本地凭据对您的网站进行身份验证。连接后,您的 Android 应用程序可以将事件发布到您网站内的 RESTful 端点,再次使用您的自定义 Spring Social API 绑定。

在这种情况下,您的用户不会从 Android 应用程序向 Facebook 进行身份验证。这假设他们已经在您的网站上建立了一个帐户和与 Facebook 的连接。事实上,这就是 SpringSource Greenhouse参考应用程序的工作方式。

这使我们回到您问题的前一部分:

当工作人员成功通过 FB 进行身份验证时,他们也会以编程方式使用 Spring Security 登录我的本地 web 应用程序。

如果我理解正确,您要求授权您的 Android 客户端使用 Facebook 凭据访问您的第三方网站。虽然这当然是可能的,但目前不支持 Spring Social 和 Spring for Android。

另一种选择是考虑您的网站的移动版本。这样,Android 和其他移动设备就可以像从普通浏览器一样使用他们的 Facebook 凭据简单地登录到您的网站。UI 将更适合移动设备,并且会消除额外的 OAuth 服务器/客户端配置的额外复杂性。

最后,解决您问题的最后一部分。这确实是与前面部分不同的问题:

此示例似乎手动管理 OAuth 身份验证。

主要问题是 Spring Social 还不支持 Resource Owner Credentials Grant (ROCG)。添加此功能将简化在 Android 上为 Facebook 获取访问令牌的过程,因为您不必处理浏览器重定向。有关更多信息,请参阅此Spring Social 问题

由于缺少 ROCG,Spring for Android 示例应用程序说明了一种使用 Spring Social 获取访问令牌的方法。在这种情况下,它是客户端身份验证流程的修改版本。作为参考,Facebook 有一个有用的页面描述了所有可用的身份验证方法。成功认证后,webview 重定向到一个 url,此时应用程序能够从该 url 检索访问令牌。

SpringSource 正在讨论如何在未来的版本中简化身份验证并改进 Spring Social 和 Spring for Android 之间的这部分集成。

于 2012-07-13T16:52:45.830 回答