Spring Social - 成功登录后不会重定向到SignUp页面

时间:2015-05-19 23:35:13

标签: spring spring-social

首先让我说我是Spring and Spring Social的新手。我设法让社交网络身份验证启动并运行到用户可以点击"登录Twitter",他们被重定向到Twitter登录页面,并在使用他们的凭据登录后,他们被重定向回我的申请。

但是,当他们返回我的应用程序时,他们不会被带到SignUp屏幕,而是返回到登录屏幕。以下是我的SocialConfig:

@Configuration
@EnableSocial
public class SocialConfig implements SocialConfigurer {

    @Inject
    private DataSource dataSource;

    //
    // SocialConfigurer implementation methods
    //

    @Override
    public void addConnectionFactories(ConnectionFactoryConfigurer cfConfig, Environment env) {
        cfConfig.addConnectionFactory(new TwitterConnectionFactory("<api-key>", "<secret-key>"));
    }

    @Override
    public UserIdSource getUserIdSource() {
        return new UserIdSource() {
            @Override
            public String getUserId() {
                Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
                if (authentication == null) {
                    throw new IllegalStateException("Unable to get a ConnectionRepository: no user signed in");
                }
                return authentication.getName();
            }
        };
    }

    @Override
    public UsersConnectionRepository getUsersConnectionRepository(ConnectionFactoryLocator connectionFactoryLocator) {
        return new JdbcUsersConnectionRepository(dataSource, connectionFactoryLocator, Encryptors.noOpText());
    }

    //
    // API Binding Beans
    //

    @Bean
    @Scope(value="request", proxyMode=ScopedProxyMode.INTERFACES)
    public Facebook facebook(ConnectionRepository repository) {
        Connection<Facebook> connection = repository.findPrimaryConnection(Facebook.class);
        return connection != null ? connection.getApi() : null;
    }

    @Bean
    @Scope(value="request", proxyMode=ScopedProxyMode.INTERFACES)
    public Twitter twitter(ConnectionRepository repository) {
        Connection<Twitter> connection = repository.findPrimaryConnection(Twitter.class);
        return connection != null ? connection.getApi() : null;
    }

    //
    // Web Controller and Filter Beans
    //
    @Bean
    public ConnectController connectController(ConnectionFactoryLocator connectionFactoryLocator, ConnectionRepository connectionRepository) {
        ConnectController connectController = new ConnectController(connectionFactoryLocator, connectionRepository);
        return connectController;
    }

    @Bean
    public ProviderSignInController providerSignInController(ConnectionFactoryLocator connectionFactoryLocator, UsersConnectionRepository usersConnectionRepository) {
        return new ProviderSignInController(connectionFactoryLocator, usersConnectionRepository, new SimpleSignInAdapter(new HttpSessionRequestCache()));
    }

    @Bean
    public ReconnectFilter apiExceptionHandler(UsersConnectionRepository usersConnectionRepository, UserIdSource userIdSource) {
        return new ReconnectFilter(usersConnectionRepository, userIdSource);
    }

}

我还在我的数据库中创建了UserConnection表,我从日志中看到,当用户登录Twitter时,它会从该表中读取,但不会向该表写入任何内容。

有人可以帮我解决这个问题吗?

编辑:

  1. 我已在Spring社交文档中阅读以下内容:&#34;如果在为访问令牌交换请求令牌或在获取用户的配置文件数据时发生任何错误,ProviderSignInController将重定向到应用程序的登录URL。对登录URL的请求将出现&#34;错误&#34;查询参数设置为&#34; provider&#34;表示与提供商通信时发生错误。&#34; - 这就是我的申请中发生的事情。我该如何调试呢?

0 个答案:

没有答案
相关问题