2014-10-17 122 views
0

春季社交有可能允许用户使用他的社交账户登录应用程序吗?春季社交账户登录

我认为只有登录的用户可以连接他们的帐户与社交帐户,如果有一个用户没有在应用程序注册,我们想让他登录应用程序,这是不可能的,因为当我们创建connectionRepository时我们必须通过userid。

+0

HTTP://docs.spr ing.io/spring-social/docs/1.0.x/reference/html/signin.html – sp00m 2014-10-17 09:50:41

回答

3

你需要的是定义

@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) { 
     ... 
    } 
} 
+0

谢谢,我会试试看。 – 2014-10-17 12:09:30

+0

我试过了,signIn中的breakpoint不工作,看起来流量不正确 – 2014-10-21 18:51:27

+0

我已经添加了signinadapter,但是登录方法没有被调用,你能帮助找到问题吗? – 2014-11-15 08:08:51