2014-10-17 178 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