Java Can';t使用Spring Social:error=provider连接到twitter
我正在尝试使用SpringSocial建立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;
@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”