使用twitter4j库创建多个Twitter实例。

7
我需要能够使用相同的Consumer Key和Secret但不同的用户级别访问令牌创建不同的Twitter实例。
我已经使用标准的Twitter OAuth登录协议根据我的应用程序的消费者凭据获得了10个用户的访问令牌。现在,我想创建一个包含多个Twitter实例的列表,每个实例都使用单独的Access Token进行初始化。然而,我无法做到这一点。
我最困惑的原因是,我不理解Twitter4j如何实例化Twitter实例。我不理解TwitterFactory.getSingleton()方法和TwitterFactory().getInstance()方法之间的区别。
我还不明白Access Tokens是否可以独立工作而不必提供Consumer Key和Secret,或者在使用Access Tokens时是否需要提供Consumer Key和Secret。
如果有人能详细解释一下满足我的需求的设计,我将非常感激。
2个回答

12

简而言之,您可能需要像这样的代码:

TwitterFactory tf = new TwitterFactory();
Twitter user1 = tf.getInstance(new AccessToken("XXX","XXX"));
Twitter user2 = tf.getInstance(new AccessToken("XXX","XXX"));

一个 Twitter 实例只能处理一个账户。 如果要处理多个账户,您需要使用 TwitterFactory#getInstance(AccessToken) 实例化多个 Twitter 实例。

不建议硬编码使用者密钥/密钥对,您可能需要在 twitter4j.properties 中指定它们。 http://twitter4j.org/en/configuration.html#fileconfiguration


我想在整个应用程序中拥有相同的Twitter实例;由于某种原因,在Application类中拥有该实例后,当我尝试从不同的活动中调用它时,它会崩溃。我需要存储访问令牌,然后稍后使用它来获取新的Twitter实例吗?谢谢。 - Eenvincible

4
Damn it 再多搜索一点就能为我省下100个声望值了。
明确一点:Twitter 和 TwitterStream 实例之间是有区别的。Twitter 实例确实可以有一个消费者 key+ secret 和多个 OAuth 令牌。这回答了 OP 的问题。
现在,对于需要访问 Twitter 流 API 的 Twitterstream 实例,情况不同。即使它们具有不同的 OAuth 令牌,你也只能在给定时间内运行一个 TwitterStream 对象,而不能有几个。
根据 dev.twitter.com
“连接到 stream.twitter.com 端点时,最好坚持“一个帐户、一个应用程序、一个开放连接”的概念。如果你计划使用其他不同的应用程序与 stream.twitter.com 一起使用,我会努力遵循同样的 1:1:1 概念。”
“你可能会发现,在某些时候,stream.twitter.com 让你在这里或那里多开一些开放式连接,但这种行为不应该被算作。”

我把赏金给了山本悠介,因为他第一个提供了正确的答案,如果这个答案对您有所帮助,请考虑给它点个赞!;-)


5
作为Twitter4J的作者也有所帮助 ;) - mez.pahlan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接