春季社交有可能允许用户使用他的社交账户登录应用程序吗?春季社交账户登录
我认为只有登录的用户可以连接他们的帐户与社交帐户,如果有一个用户没有在应用程序注册,我们想让他登录应用程序,这是不可能的,因为当我们创建connectionRepository时我们必须通过userid。
春季社交有可能允许用户使用他的社交账户登录应用程序吗?春季社交账户登录
我认为只有登录的用户可以连接他们的帐户与社交帐户,如果有一个用户没有在应用程序注册,我们想让他登录应用程序,这是不可能的,因为当我们创建connectionRepository时我们必须通过userid。
你需要的是定义
@Bean(name="connectionFactoryLocator")
public ConnectionFactoryLocator connectionFactoryLocator() {
ConnectionFactoryRegistry registry = new ConnectionFactoryRegistry();
registry.addConnectionFactory(new FacebookConnectionFactory(facebookId,facebookSecret));
return registry;
}
@Bean
public UsersConnectionRepository socialConnectionRepository() {
return new SocialConnectionRepository(dataSource, userRepository, connectionFactoryLocator());
}
,其中用户信息库是例如弹簧数据的JPA存储库来读取/写入到数据库用户表。
然后你就可以使用由弹簧社会(没有必要,如果你使用默认的conf就定义为豆)
@Bean
public ProviderSignInController providerSignInController() {
ProviderSignInController providerSignInController = new ProviderSignInController(connectionFactoryLocator(), socialConnectionRepository(),
new SimpleSignInAdapter());
providerSignInController.setSignInUrl("/");
providerSignInController.setSignUpUrl("/");
return providerSignInController;
}
看看它,你必须张贴您的用户名/密码在哪些路径提供控制器(由默认的/登入/ Facebook)的
如果需要通过Spring Security的登录用户或做一些特别的信息与从FB,那么你必须定义适配器:
private class SimpleSignInAdapter implements SignInAdapter {
public String signIn(String userId, Connection<?> connection, NativeWebRequest request) {
...
}
}
谢谢,我会试试看。 – 2014-10-17 12:09:30
我试过了,signIn中的breakpoint不工作,看起来流量不正确 – 2014-10-21 18:51:27
我已经添加了signinadapter,但是登录方法没有被调用,你能帮助找到问题吗? – 2014-11-15 08:08:51
HTTP://docs.spr ing.io/spring-social/docs/1.0.x/reference/html/signin.html – sp00m 2014-10-17 09:50:41