我目前有一个使用Spring MVC和Spring Social建立的网站,因此用户可以使用Facebook和Twitter登录。
现在,我想授权我的Android客户端使用Facebook(或Twitter)凭据访问我的第三方网站。 As stated here,这应该是可能的。但他并没有继续说出如何。任何人都可以让我在路上吗?请给我一些如何做到这一点的基本概述。我真的被困在这里......
答案 0 :(得分:14)
我实际上正在处理一个需要做同样事情的项目。我实现了Spring Security& Spring Social for the website也需要允许iOS和Android应用程序通过社交网站连接。
以下是您需要做的事情:
将特定于设备的API实施到应用程序项目的开发中。因此,实现Facebook,Twitter或其他任何通常在设备上的操作。您将在那里进行实际的身份验证过程。
为您的应用实施特殊网址,以便通过社交服务登录。例如,http://yousiteapi.com/services/auth/socialSignin。您将需要将所有参数传递给此api,这通常会写入UserConnection表实现 - providerId,userProviderId,authenticationToken,secret等。如果提供者不使用其中一个,只需传入null或空的var。
在此控制器中,您将需要引用spring Social SignInAdapter和ConnectionSignUp类的实现以及ConnectionRepository和UserConnectionRepository的实现,并基本上重现整个注册过程。首先,您需要通过您传回的providerId确定它是哪个提供者,并使用提供者的consumerKey和consumerSecret来实现您需要的特定ConnectionFactory。然后,使用您传入的数据来创建ConnectionData对象。使用ConnectionData对象,可以创建实际的Connection对象。
现在您可以复制普通Spring Social登录的逻辑:首先,使用您对UserConnectionRepository的引用并调用findUserIdsWithConnection()方法以查看用户之前是否已登录。如果没有,请调用ConnectionSignUp.execute()方法创建用户。
最后,您只需调用SignInAdapter.signin()方法对用户进行签名。不要忘记将响应设置为OK,以便您的应用知道这是成功的。