我目前有一个使用 Spring MVC 和 Spring Social 建立的网站,因此用户可以使用 Facebook 和 Twitter 登录。
现在我想授权我的 Android 客户端使用 Facebook(或 Twitter)凭据访问我的第三方网站。如此处所述,这应该是可能的。但他没有继续说如何。谁能帮我解决这个问题?只需给我一些关于如何做到这一点的基本大纲。我真的被困在这里了...
我目前有一个使用 Spring MVC 和 Spring Social 建立的网站,因此用户可以使用 Facebook 和 Twitter 登录。
现在我想授权我的 Android 客户端使用 Facebook(或 Twitter)凭据访问我的第三方网站。如此处所述,这应该是可能的。但他没有继续说如何。谁能帮我解决这个问题?只需给我一些关于如何做到这一点的基本大纲。我真的被困在这里了...
我实际上正在做一个需要做同样事情的项目。我为网站实现了 Spring Security 和 Spring Social,还需要允许 iOS 和 Android 应用程序通过社交网站进行连接。
这是您需要做的:
将特定于设备的 API 实施到应用项目的开发中。所以,在设备上实现 Facebook、Twitter 或其他任何你通常会做的事情。您将在那里进行实际的身份验证过程。
为您的应用程序实施一个特殊的 URL,以通过社交服务登录。例如, http: //yousiteapi.com/services/auth/socialSignin。您需要将所有参数传递给此 api,这些参数通常会写入 UserConnection 表实现 - providerId、userProviderId、authenticationToken、secret 等。如果提供者不使用其中之一,只需传入 null或空变量。
在此控制器中,您将需要参考您的 spring Social SignInAdapter 和 ConnectionSignUp 类的实现以及 ConnectionRepository 和 UserConnectionRepository 的实现,并基本上重现整个注册过程。首先,您需要通过您传回的 providerId 确定它是哪个提供者,并使用提供者的 consumerKey 和 consumerSecret 来实现您需要的特定 ConnectionFactory。然后,使用您传入的数据创建 ConnectionData 对象。使用 ConnectionData 对象,您可以创建实际的 Connection 对象。
现在是您复制普通 Spring Social 登录逻辑的地方:首先,使用您对 UserConnectionRepository 的引用并调用 findUserIdsWithConnection() 方法来查看用户之前是否已登录。如果没有,请调用 ConnectionSignUp.execute() 方法创建用户。
最后,您只需调用您的 SignInAdapter.signin() 方法来让用户登录。不要忘记将您的响应设置为 OK,以便您的应用程序知道这是成功的。
哇,听起来很多。实际上听起来比它更多。希望这至少有助于为您指明正确的方向。