1

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

我已经在 Twitter 上注册了我的应用程序(根据此处提供的指南:如何从 Android 应用程序向一个特定帐户发布推文?)并且我拥有必要的 ConsumerKey、ConsumerSecret、AccessToken 和 AccessTokenSecret。我已将帐户设置为读写,并将请求类型设置为 GET。

我正在使用 Twitter4J 并将 twitter4j-core-3.0.3.jar 安装到我的应用程序中。清单文件具有所需的“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 想要更多的东西?

任何人都可以就我做错了什么提供任何建议吗?

4

2 回答 2

2

最终设法查明真相!

我的特殊问题是我没有在 Twitter 应用程序设置页面中输入回调 URL。我只对向我的应用程序链接的 Twitter 帐户发送推文感兴趣,并且我已经拥有 4 个令牌/秘密,因此我不需要让用户通过我的应用程序授权他们自己的帐户。因此,我不需要回调 URL。

不幸的是,Twitter 应用程序页面允许您在请求令牌/秘密时将该字段留空,并且他们没有明确说明回调 URL 是必填字段。如果你不需要它,你可以把任何你喜欢的东西放在那里;但是,如果您将其留空,Twitter 将不会让您在您的应用中发布推文!将访问类型设置为“读取和写入”就足以更新状态,但如果您想做更多,请将其设置为“读取、写入和直接消息”。

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

我设法找到了一些关于从 Android 应用程序(此处此处,特别是此处)发推文的非常好的教程,这些教程清楚地表明回调 URL 是必需的,并继续非常清楚地解释如何让它工作.

于 2013-06-13T09:00:09.310 回答
0

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

于 2013-06-11T04:58:26.510 回答