2013-02-14 80 views
1

我試圖以編程方式使用Spring Social進行推送 - 我已經創建了一個Twitter應用程序,我爲其生成了OAuth訪問令牌,但我無法配置Spring社交本身的方式,它實際上可以推文。 配置我已經是這樣的:如何使用Spring Social以編程方式使用Spring Social進行編程

ConnectionFactoryRegistry registry = new ConnectionFactoryRegistry(); 
     registry.addConnectionFactory(new TwitterConnectionFactory(CONSUMER_KEY, CONSUMER_SECRET)); 
JdbcUsersConnectionRepository jdbcUsersConnectionRepository = new JdbcUsersConnectionRepository(dataSource, registry, Encryptors.noOpText()); 
ConnectionRepository connectionRepository = jdbcUsersConnectionRepository.createConnectionRepository("ServerFaultBest"); 
Twitter twitterApi = connectionRepository.getPrimaryConnection(Twitter.class).getApi(); 

但由於沒有第一正在做連接,我得到:

Caused by: org.springframework.social.connect.NotConnectedException: Not connected to provider 'twitter' 
at org.springframework.social.connect.jdbc.JdbcConnectionRepository.getPrimaryConnection(JdbcConnectionRepository.java:151) ~[spring-social-core-1.0.2.RELEASE.jar:na] 

我甚至嘗試手動配置TwitterTemplate:

TwitterTemplate twitterTemplate = new TwitterTemplate(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET); 
    twitterTemplate.timelineOperations().updateStatus("First programatic tweet with Spring Social"); 

但我得到:

java.lang.IllegalStateException: Connection not obtained from this manager 
at org.apache.http.util.Asserts.check(Asserts.java:34) 
at org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager.releaseConnection(ThreadSafeClientConnManager.java:252) 
at org.apache.http.impl.conn.AbstractClientConnAdapter.abortConnection(AbstractClientConnAdapter.java:338) 
at org.apache.http.impl.client.DefaultRequestDirector.abortConnection(DefaultRequestDirector.java:1119) 
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:590) 
at org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:858) 
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:76) 
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:97) 
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:58) 
at org.springframework.social.support.HttpComponentsClientHttpRequest.executeInternal(HttpComponentsClientHttpRequest.java:81) 
at org.springframework.social.support.AbstractBufferingClientHttpRequest.executeInternal(AbstractBufferingClientHttpRequest.java:48) 
at org.springframework.http.client.AbstractClientHttpRequest.execute(AbstractClientHttpRequest.java:49) 
at org.springframework.http.client.InterceptingClientHttpRequest$RequestExecution.execute(InterceptingClientHttpRequest.java:91) 
at org.springframework.social.oauth1.OAuth1RequestInterceptor.intercept(OAuth1RequestInterceptor.java:48) 
at org.springframework.http.client.InterceptingClientHttpRequest$RequestExecution.execute(InterceptingClientHttpRequest.java:81) 
at org.springframework.http.client.InterceptingClientHttpRequest.executeInternal(InterceptingClientHttpRequest.java:67) 
at org.springframework.http.client.AbstractBufferingClientHttpRequest.executeInternal(AbstractBufferingClientHttpRequest.java:46) 
at org.springframework.http.client.AbstractClientHttpRequest.execute(AbstractClientHttpRequest.java:49) 
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:483) 
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:460) 
at org.springframework.web.client.RestTemplate.postForObject(RestTemplate.java:309) 
at org.springframework.social.twitter.api.impl.TimelineTemplate.updateStatus(TimelineTemplate.java:138) 
at org.springframework.social.twitter.api.impl.TimelineTemplate.updateStatus(TimelineTemplate.java:126) 

我猜測它必須是一個簡單的配置步驟,我失蹤了 - 例如,我可以通過curl命令發送推文很好。 任何想法可能會失去這種配置?

謝謝。
Eugen。

回答

相關問題