集成Twitter:为什么我不需要认证就可以发布状态?



我想发布一个简单的状态消息到一个Twitter帐户,链接到我的应用程序。我的应用程序的所有用户将发布到相同的Twitter帐户。

我已经在Twitter上注册了我的应用程序(根据这里给出的指导:如何从Android应用程序发布推文到一个特定的帐户?),我有必要的ConsumerKey, ConsumerSecret, AccessToken和AccessTokenSecret。我已将账户设置为Read &写,并设置请求类型为GET。

我使用Twitter4J,并将Twitter4J -core-3.0.3.jar安装到我的应用程序中。Manifest文件具有所需的"android.permission.INTERNET"。这是代码…::

AccessToken a = new AccessToken(AccessToken, AccessTokenSecret);
Twitter twitter = new TwitterFactory().getInstance();
twitter.setOAuthConsumer(ConsumerKey, ConsumerSecret);
twitter.setOAuthAccessToken(a);
try
{
    twitter.updateStatus("Tweet Test #1");
    Log.v(TAG, "Twitter Tweet sent!");
}
catch (TwitterException e)
{
    // TODO Auto-generated catch block
    Log.e(TAG, "Error sending Tweet:" + e.getMessage());
}

twitter.updateStatus("xxxxxx")调用导致在logcat中报告" Received authentication challenge is null "的异常。

我以为我可以发帖,但似乎Twitter想要更多的东西?

谁能给我一些建议,我做错了什么?

终于搞清楚了!

我特别的问题是,我没有在Twitter应用程序设置页面输入回调URL。我只对发送tweet到我的应用程序链接的Twitter帐户感兴趣,我已经有了4个令牌/秘密,所以我不需要让用户通过我的应用程序授权他们自己的帐户。因此,我不需要一个Callback URL。

不幸的是,当你请求令牌/秘密时,Twitter应用程序页面允许你将该字段留空,并且他们不清楚Callback URL是必填字段。如果你不需要它,你可以在里面放任何你喜欢的东西;但是如果你留空,Twitter就不会让你在你的应用上发消息!将访问类型设置为"Read &"写"仅用于更新状态就足够了,但将其设置为"读,写&;"直接消息",如果你想做更多。

一些教程说你应该将应用程序类型设置为"浏览器"(而不是"桌面"),但这个选项似乎已经从Twitter应用程序页面消失了,所以我想这已经不再重要了。

我设法找到了一些非常好的教程,关于从Android应用程序(在这里,在这里,特别是,在这里)发推,这清楚地表明,Callback URL是一个要求,并继续非常清楚地解释如何让它工作。

您是否检查过确保在您的Twitter4J配置文件中没有任何额外的空白?仔细检查consumer..access..字段,以防万一。

相关内容

最新更新