spring通过社交帐户登录

spring通过社交帐户登录,spring,spring-social,Spring,Spring Social,在SpringSocial中,是否允许用户使用其社交帐户登录应用程序 我认为只有已登录的用户才能将其帐户与社交帐户连接,如果有一个用户未在应用程序中注册,我们希望允许他登录应用程序,这是不可能的,因为当我们创建connectionRepository时,我们必须传递userid。您需要的是定义 @Bean(name="connectionFactoryLocator") public ConnectionFactoryLocator connectionFactoryLocator() {

在SpringSocial中,是否允许用户使用其社交帐户登录应用程序


我认为只有已登录的用户才能将其帐户与社交帐户连接,如果有一个用户未在应用程序中注册,我们希望允许他登录应用程序,这是不可能的,因为当我们创建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());
}
其中,用户存储库是例如SpringDataJPA存储库,用于在db中读/写用户表

然后您可以使用SpringSocial提供的控制器(如果您使用默认配置,则不需要定义为bean)

查看您必须在哪些路径上发布用户名/密码(默认为its/signin/facebook)

如果您需要通过spring security登录用户或使用fb的信息执行特殊操作,则必须定义适配器:

private class SimpleSignInAdapter implements SignInAdapter {
    public String signIn(String userId, Connection<?> connection, NativeWebRequest request) {
      ...
    }
}
私有类SimpleSignInAdapter实现SignInAdapter{
公共字符串签名(字符串用户ID、连接、NativeWebRequest请求){
...
}
}

您需要的是定义

@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());
}
其中,用户存储库是例如SpringDataJPA存储库,用于在db中读/写用户表

然后您可以使用SpringSocial提供的控制器(如果您使用默认配置,则不需要定义为bean)

查看您必须在哪些路径上发布用户名/密码(默认为its/signin/facebook)

如果您需要通过spring security登录用户或使用fb的信息执行特殊操作,则必须定义适配器:

private class SimpleSignInAdapter implements SignInAdapter {
    public String signIn(String userId, Connection<?> connection, NativeWebRequest request) {
      ...
    }
}
私有类SimpleSignInAdapter实现SignInAdapter{
公共字符串签名(字符串用户ID、连接、NativeWebRequest请求){
...
}
}

您需要的是定义

@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());
}
其中,用户存储库是例如SpringDataJPA存储库,用于在db中读/写用户表

然后您可以使用SpringSocial提供的控制器(如果您使用默认配置,则不需要定义为bean)

查看您必须在哪些路径上发布用户名/密码(默认为its/signin/facebook)

如果您需要通过spring security登录用户或使用fb的信息执行特殊操作,则必须定义适配器:

private class SimpleSignInAdapter implements SignInAdapter {
    public String signIn(String userId, Connection<?> connection, NativeWebRequest request) {
      ...
    }
}
私有类SimpleSignInAdapter实现SignInAdapter{
公共字符串签名(字符串用户ID、连接、NativeWebRequest请求){
...
}
}

您需要的是定义

@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());
}
其中,用户存储库是例如SpringDataJPA存储库,用于在db中读/写用户表

然后您可以使用SpringSocial提供的控制器(如果您使用默认配置,则不需要定义为bean)

查看您必须在哪些路径上发布用户名/密码(默认为its/signin/facebook)

如果您需要通过spring security登录用户或使用fb的信息执行特殊操作,则必须定义适配器:

private class SimpleSignInAdapter implements SignInAdapter {
    public String signIn(String userId, Connection<?> connection, NativeWebRequest request) {
      ...
    }
}
私有类SimpleSignInAdapter实现SignInAdapter{
公共字符串签名(字符串用户ID、连接、NativeWebRequest请求){
...
}
}


谢谢,我会试试。我试过了,signIn中的断点不起作用,流似乎不正确我添加了signinadapter,但signIn方法没有被调用,你能帮我找到问题吗?也许你的ProviderSignInController没有注册,你用的是spring mvc吗?打开spring日志(在log4j.properties文件中)并检查是否有关于ProviderSignInControl的任何信息。如果没有任何详细信息,很难提供帮助:)ProviderSignincontroller找不到与试图登录的Provider用户关联的本地用户,可能有机会让该用户注册应用程序。然后我知道它正在重定向到注册url,因为最初找不到本地用户。所以在注册时我可以保存用户,然后在下次它也成功地重定向到我的登录呼叫,但现在的问题是,有没有办法第一次自动创建用户,第二个问题是,spirng social将USERCONNECTION表用于用户存储,我可以将其配置为使用另一个表吗?谢谢,我会尝试。我尝试过,signIn内的断点不起作用,似乎流不正确我已添加了signinadapter,但没有调用signIn方法,您可以帮助查找问题吗?可能您的ProviderSignInControl未注册,您是否使用spring mvc?打开spring日志(在log4j.properties文件中)并检查是否有关于ProviderSignInControl的任何信息。如果没有任何详细信息,很难提供帮助:)ProviderSignincontroller找不到与试图登录的Provider用户关联的本地用户,可能有机会让该用户注册应用程序。然后我知道它正在重定向到注册url,因为最初找不到本地用户。所以在注册时我可以保存用户,然后在下次它也成功地重定向到我的登录呼叫,但现在的问题是,有没有办法第一次自动创建用户,第二个问题是,spirng social将USERCONNECTION表用于用户存储,我可以将其配置为使用另一个表吗?谢谢,我会尝试。我尝试过,signIn内的断点不起作用,似乎流不正确我已添加了signinadapter,但没有调用signIn方法,您可以帮助查找问题吗?可能您的ProviderSignInControl未注册,您是否使用spring mvc?打开spring日志(在log4j.properties文件中)并检查是否有关于ProviderSignInControl的任何信息。如果没有任何详细信息,很难提供帮助:)ProviderSignincontroller找不到与试图登录的Provider用户关联的本地用户,可能有机会让该用户注册应用程序。然后我知道它正在重定向到注册url,因为最初没有找到本地用户。所以在注册时我可以保存用户,然后在下次它也成功重定向到我的登录呼叫,但现在问题是我