【问题标题】:How to Tweet Programatically with Spring Social On Your Own Account如何在您自己的帐户上使用 Spring Social 以编程方式发布推文
【发布时间】:2013-02-14 00:02:15
【问题描述】:

我正在尝试使用 Spring Social 以编程方式发送推文 - 我已经创建了一个 twitter 应用程序,我已经为它生成了一个 OAuth 访问令牌,但是我无法配置 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 命令发送推文就好了。 知道我在此配置中可能缺少什么吗?

谢谢。
欧根。

【问题讨论】:

    标签: oauth twitter spring-social


    【解决方案1】:

    找到了答案 - 我使用的是 Apache HttpClient 库的测试版,我遇到了这个错误: https://issues.apache.org/jira/browse/HTTPCLIENT-1313

    在最新的 GA 版本 (4.2.3) 中,我可以使用 TwitterTemplate 在我自己的帐户上发布推文。

    【讨论】:

      猜你喜欢
      • 2019-03-06
      • 2014-01-25
      • 2012-01-01
      • 1970-01-01
      • 2020-03-30
      • 2017-04-24
      • 1970-01-01
      • 2012-09-05
      • 1970-01-01
      相关资源
      最近更新 更多