Android facebook 登录 Spring Social web 应用

标签 android facebook spring spring-social

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

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

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

欢迎任何反馈。谢谢。

杰普

最佳答案

Now i want to write a android app which enables users to post to my guestbook and view/create events via my web application.

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

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

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

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

When staff members authenticate with FB successfully, they are programatically signed in for my local webapp with Spring Security, too.

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

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

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

This example seems to manually manage the OAuth authentication.

主要问题是 Spring Social 尚不支持资源所有者凭证授予 (ROCG)。添加此功能将简化在 Android 上为 Facebook 获取访问 token 的过程,因为您不必处理浏览器重定向。看这个Spring Social issue获取更多信息。

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

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

关于Android facebook 登录 Spring Social web 应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11374602/

相关文章:

ios - 如何使用 FBSDKCoreKit 向 Facebook 用户发布图片

wordpress - 无效范围 : publish_actions, manage_pages、publish_pages、user_managed_groups、user_posts、user_photos

java - Autowiring 抽象组件

java - Spring 启动测试 : @TestPropertySource not overriding @EnableAutoConfiguration

java - 如何在 spring-boot 1.5.10 中升级 JUnit-5?

java - 在 android 中的 javaFX 项目上运行调试器

android - 在改造的 RequestBody 中转换 Date 的 TimeZone

android - ZXing二维码/条码扫描

facebook - Facebook 和新 Twitter URL 中的 shebang/hashbang (#!) 是做什么用的?

javascript - 在 Android 和 iPhone 的 JS 链接标签上触发点击事件