Java Can';t使用Spring Social:error=provider连接到twitter

Java Can';t使用Spring Social:error=provider连接到twitter,java,spring,twitter,oauth,spring-social,Java,Spring,Twitter,Oauth,Spring Social,我正在尝试使用SpringSocial建立twitter连接。 为此,我按照文档编写了以下文件: @Configuration public class SocialConfig { @Value("${facebook.clientId}") private String facebookClientId; @Value("${facebook.clientSecret}") private String facebookClientSecret;

我正在尝试使用SpringSocial建立twitter连接。 为此,我按照文档编写了以下文件:

@Configuration
public class SocialConfig {

    @Value("${facebook.clientId}")
    private String facebookClientId;
    @Value("${facebook.clientSecret}")
    private String facebookClientSecret;

    @Value("${twitter.consumerKey}")
    private String twitterConsumerKey;
    @Value("${twitter.consumerSecret}")
    private String twitterConsumerSecret;

    @Inject
    private DataSource dataSource;

    /**
     * When a new provider is added to the app, register its
     * {@link ConnectionFactory} here.
     * 
     * @see FacebookConnectionFactory
     */
    @Bean
    public ConnectionFactoryLocator connectionFactoryLocator() {
        ConnectionFactoryRegistry registry = new ConnectionFactoryRegistry();
        registry.addConnectionFactory(new FacebookConnectionFactory(
                facebookClientId, facebookClientSecret));
        registry.addConnectionFactory(new TwitterConnectionFactory(
                twitterConsumerKey, twitterConsumerSecret));
        return registry;
    }

    /**
     * Singleton data access object providing access to connections across all
     * users.
     */
    @Bean
    public UsersConnectionRepository usersConnectionRepository() {
        JdbcUsersConnectionRepository repository = new JdbcUsersConnectionRepository(
                dataSource, connectionFactoryLocator(), Encryptors.noOpText());
        repository.setConnectionSignUp(new SimpleConnectionSignUp());
        return repository;
    }

    /**
     * Request-scoped data access object providing access to the current user's
     * connections.
     */
    @Bean
    @Scope(value = "request", proxyMode = ScopedProxyMode.INTERFACES)
    public ConnectionRepository connectionRepository() {
        User user = SecurityContext.getCurrentUser();
        return usersConnectionRepository().createConnectionRepository(
                user.getId());
    }

    @Bean
    public ConnectController connectController(){
        return new ConnectController(connectionFactoryLocator(), connectionRepository());
    }

    /**
     * A proxy to a request-scoped object representing the current user's
     * primary Facebook account.
     * 
     * @throws NotConnectedException
     *             if the user is not connected to facebook.
     */
    @Bean
    @Scope(value = "request", proxyMode = ScopedProxyMode.INTERFACES)
    public Facebook facebook() {
        return connectionRepository().getPrimaryConnection(Facebook.class)
                .getApi();
    }

    @Bean
    @Scope(value = "request", proxyMode = ScopedProxyMode.INTERFACES)
    public Twitter twitter() {
        Connection<Twitter> connection = connectionRepository()
                .findPrimaryConnection(Twitter.class);
        Twitter twitter = connection != null ? connection.getApi()
                : new TwitterTemplate();
        return twitter;
    }
}
@配置
公共类社会配置{
@值(${facebook.clientId}”)
私有字符串facebookClientId;
@值(${facebook.clientSecret}”)
私有字符串facebookClientSecret;
@值(${twitter.consumerKey}”)
私有字符串twitter;
@值(${twitter.ConsumerCret}”)
私有字符串TwitterConsumerCret;
@注入
私有数据源;
/**
*将新提供商添加到应用程序时,请注册其
*{@link ConnectionFactory}这里。
* 
*@请参阅FacebookConnectionFactory
*/
@豆子
public ConnectionFactoryLocator ConnectionFactoryLocator(){
ConnectionFactoryRegistry注册表=新的ConnectionFactoryRegistry();
registry.addConnectionFactory(新FacebookConnectionFactory(
facebookClientId,facebookClientSecret);
registry.addConnectionFactory(新TwitterConnectionFactory(
twitterConsumerKey,TwitterConsumerCret);
申报登记处;
}
/**
*单例数据访问对象,提供对所有连接的访问
*用户。
*/
@豆子
公共用户连接存储库用户连接存储库(){
JdbcUsersConnectionRepository=新的JdbcUsersConnectionRepository(
数据源,connectionFactoryLocator(),Encryptors.noOpText();
setConnectionSignUp(新的SimpleConnectionSignUp());
返回存储库;
}
/**
*请求作用域数据访问对象,提供对当前用户的
*联系。
*/
@豆子
@范围(value=“request”,proxyMode=ScopedProxyMode.INTERFACES)
公共连接存储库连接存储库(){
User User=SecurityContext.getCurrentUser();
返回usersConnectionRepository().createConnectionRepository(
getId());
}
@豆子
公共ConnectController ConnectController(){
返回新的ConnectController(connectionFactoryLocator(),connectionRepository());
}
/**
*代表当前用户的请求范围对象的代理
*主要Facebook帐户。
* 
*@抛出NotConnectedException
*如果用户未连接到facebook。
*/
@豆子
@范围(value=“request”,proxyMode=ScopedProxyMode.INTERFACES)
公共脸书{
返回connectionRepository().getPrimaryConnection(Facebook.class)
.getApi();
}
@豆子
@范围(value=“request”,proxyMode=ScopedProxyMode.INTERFACES)
公共推特{
Connection=connectionRepository()
.findPrimaryConnection(Twitter.class);
Twitter=connection!=null?connection.getApi()
:新建TwitterTemplate();
返回推特;
}
}
这段代码在facebook上运行良好,但在twitter上给我一个provider=error。所有键都正确(Twitter4j中的Twitter键工作正常)。 当我尝试获取连接时,应用程序会将我发送到twitter,然后在地址中返回“error=provider”