首页 文章

Android facebook登录Spring Social webapp

提问于
浏览
4

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

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

看着spring-android-facebook-client我很困惑 . 此示例似乎手动管理OAuth身份验证 . 但我还没想到,当后台中没有其他已经管理认证的Web应用程序时,这是实现它的方式还是另一种可能性 .

欢迎任何反馈 . 谢谢 .

Jeyp

1 回答

  • 7

    现在我想写一个Android应用程序,它允许用户通过我的Web应用程序发布到我的留言簿和查看/创建事件 .

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

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

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

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

    当工作人员成功通过FB进行身份验证时,他们也会以编程方式使用Spring Security以本地Web地址登录 .

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

    另一种选择是考虑您的网站的移动版本 . 这样,Android和其他移动设备就可以使用他们的Facebook凭据,只需从普通浏览器登录到您的网站 . 用户界面更适合移动设备,它可以消除额外OAuth服务器/客户端配置的额外复杂性 .

    最后,要解决问题的最后部分 . 这与前面的部分实际上是一个单独的问题:

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

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

    由于缺乏ROCG,Spring for Android示例应用程序演示了一种使用Spring Social获取访问令牌的方法 . 在这种情况下,它是客户端身份验证流程的修改版本 . 作为参考,Facebook有一个有用的页面描述了所有可用的authentication methods . 成功验证后,webview会重定向到网址,此时应用可以从此网址中检索访问令牌 .

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

相关问题