Android Twitter更新状态

Android Twitter更新状态,android,twitter,integration,Android,Twitter,Integration,我正在通过twitter4j将Twitter集成到Android上。我可以成功阅读我发布的推文 现在我正试图通过它发布推特,但我做不到。我收到如下奇怪的警告: 02-01 16:28:43.298: WARN/System.err(729): 401:Authentication credentials were missing or incorrect. 02-01 16:28:43.308: WARN/System.err(729): {"request":"\/1\/statuse

我正在通过twitter4j将Twitter集成到Android上。我可以成功阅读我发布的推文

现在我正试图通过它发布推特,但我做不到。我收到如下奇怪的警告:

    02-01 16:28:43.298: WARN/System.err(729): 401:Authentication credentials were missing or incorrect.
02-01 16:28:43.308: WARN/System.err(729): {"request":"\/1\/statuses\/update.json","error":"Read-only application cannot POST"}
02-01 16:28:43.308: WARN/System.err(729): TwitterException{exceptionCode=[15bb6564-00e54a7f], statusCode=401, retryAfter=0, rateLimitStatus=null, version=2.1.7-SNAPSHOT(build: fd76317d18a608269f0566f73bbb827420c4c77e)}
02-01 16:28:43.308: WARN/System.err(729):     at twitter4j.internal.http.HttpClientImpl.request(HttpClientImpl.java:309)
02-01 16:28:43.318: WARN/System.err(729):     at twitter4j.internal.http.HttpClientWrapper.request(HttpClientWrapper.java:72)
02-01 16:28:43.318: WARN/System.err(729):     at twitter4j.internal.http.HttpClientWrapper.post(HttpClientWrapper.java:103)
02-01 16:28:43.318: WARN/System.err(729):     at twitter4j.Twitter.updateStatus(Twitter.java:501)
02-01 16:28:43.330: WARN/System.err(729):     at com.T4J_OAuth.activities.Main$1.onClick(Main.java:69)
02-01 16:28:43.330: WARN/System.err(729):     at android.view.View.performClick(View.java:2364)
02-01 16:28:43.330: WARN/System.err(729):     at android.view.View.onTouchEvent(View.java:4179)
02-01 16:28:43.339: WARN/System.err(729):     at android.widget.TextView.onTouchEvent(TextView.java:6541)
02-01 16:28:43.339: WARN/System.err(729):     at android.view.View.dispatchTouchEvent(View.java:3709)
02-01 16:28:43.339: WARN/System.err(729):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
02-01 16:28:43.349: WARN/System.err(729):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
02-01 16:28:43.349: WARN/System.err(729):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
02-01 16:28:43.349: WARN/System.err(729):     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:884)
02-01 16:28:43.359: WARN/System.err(729):     at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1659)
02-01 16:28:43.359: WARN/System.err(729):     at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1107)
02-01 16:28:43.359: WARN/System.err(729):     at android.app.Activity.dispatchTouchEvent(Activity.java:2061)
02-01 16:28:43.369: WARN/System.err(729):     at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1643)
02-01 16:28:43.369: WARN/System.err(729):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1691)
02-01 16:28:43.378: WARN/System.err(729):     at android.os.Handler.dispatchMessage(Handler.java:99)
02-01 16:28:43.378: WARN/System.err(729):     at android.os.Looper.loop(Looper.java:123)
02-01 16:28:43.378: WARN/System.err(729):     at android.app.ActivityThread.main(ActivityThread.java:4363)
02-01 16:28:43.378: WARN/System.err(729):     at java.lang.reflect.Method.invokeNative(Native Method)
02-01 16:28:43.389: WARN/System.err(729):     at java.lang.reflect.Method.invoke(Method.java:521)
02-01 16:28:43.389: WARN/System.err(729):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
02-01 16:28:43.398: WARN/System.err(729):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
02-01 16:28:43.398: WARN/System.err(729):     at dalvik.system.NativeStart.main(Native Method)
虽然我在Twitter上已经将我的应用程序设置为读写,但它说我不能通过只读应用程序发布。

第一行说: 02-01 16:28:43.298:警告/系统错误(729):401:身份验证凭据丢失或不正确

您可能根本没有登录,或者使用了错误的凭据。 使用oAuth登录Twitter不再是一件小事。但是当你已经注册了你的应用程序,你应该有消费者令牌+密码来使用

请看一下使用twitter4j与Twitter进行通信的Android应用程序的示例代码或源代码。

第一行说明: 02-01 16:28:43.298:警告/系统错误(729):401:身份验证凭据丢失或不正确

您可能根本没有登录,或者使用了错误的凭据。 使用oAuth登录Twitter不再是一件小事。但是当你已经注册了你的应用程序,你应该有消费者令牌+密码来使用


查看使用twitter4j与Twitter进行通信的Android应用程序的示例代码或源代码。

在Twitter上发布推文与获取时间线不同

考虑到Twitter4J,可能会出现以下情况:

它要求您拥有一个已授权的
Twitter
类的实例

为了获得时间线,您需要执行以下操作:

Twitter twitter = new TwitterFactory().getInstance();
twitter.setOAuthConsumer(consumerKey, consumerSecret);
RequestToken requestToken = twitter.getOAuthRequestToken(CALLBACKURL); 
...
...
成功进行OAuth验证后,您将获得
OAuth\u验证程序
变量,然后使用以下行创建一个
AccessToken

AccessToken accessToken = twitter.getOAuthAccessToken(requestToken,oauth_verifier);
String token = accessToken.getToken(), 
      secret = accessToken.getTokenSecret();
将上述
token
secret
保存在某处,它将在以后生成
AccessToken
时使用

现在,更新状态的代码是:

AccessToken accessToken = new AccessToken(token,secret);
Twitter twitter = new TwitterFactory().getOAuthAuthorizedInstance(consumerKey,consumerSecret,accessToken);
Status status = twitter.updateStatus("My First Status Update");
statusId = (int)status.getId();
这会将消息
My First Status update
更新到您的时间线中,并在
statusId
变量中获取此状态的
ID

有关如何使用OAuth实现使用twitter登录并获取时间线的第一条推文的工作示例,请单击指向我的博客文章的链接


我相信,在对其稍作修改并使用上面的代码后,您也可以将其转换为tweet发布代码

在twitter上发布tweet与获取时间线不同

try {
    AccessToken accessToken = new AccessToken(token,secret);
    Twitter twitter = new TwitterFactory().getOAuthAuthorizedInstance(consumerKey,consumerSecret,accessToken);
    shareText= edttweetnow.getText().toString();
    status = twitter.updateStatus(shareText);
    int statusId = (int)status.getId();

    Toast.makeText(TweetLoad.this, "Tweet Successfull", Toast.LENGTH_LONG).show();

} catch (TwitterException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    Toast.makeText(TweetLoad.this, e.toString(), Toast.LENGTH_LONG).show();
}
考虑到Twitter4J,可能会出现以下情况:

它要求您拥有一个已授权的
Twitter
类的实例

为了获得时间线,您需要执行以下操作:

Twitter twitter = new TwitterFactory().getInstance();
twitter.setOAuthConsumer(consumerKey, consumerSecret);
RequestToken requestToken = twitter.getOAuthRequestToken(CALLBACKURL); 
...
...
成功进行OAuth验证后,您将获得
OAuth\u验证程序
变量,然后使用以下行创建一个
AccessToken

AccessToken accessToken = twitter.getOAuthAccessToken(requestToken,oauth_verifier);
String token = accessToken.getToken(), 
      secret = accessToken.getTokenSecret();
将上述
token
secret
保存在某处,它将在以后生成
AccessToken
时使用

现在,更新状态的代码是:

AccessToken accessToken = new AccessToken(token,secret);
Twitter twitter = new TwitterFactory().getOAuthAuthorizedInstance(consumerKey,consumerSecret,accessToken);
Status status = twitter.updateStatus("My First Status Update");
statusId = (int)status.getId();
这会将消息
My First Status update
更新到您的时间线中,并在
statusId
变量中获取此状态的
ID

有关如何使用OAuth实现使用twitter登录并获取时间线的第一条推文的工作示例,请单击指向我的博客文章的链接

我相信,在对其稍作修改并使用上面的代码后,您也可以将其转换为tweet发布代码

try {
    AccessToken accessToken = new AccessToken(token,secret);
    Twitter twitter = new TwitterFactory().getOAuthAuthorizedInstance(consumerKey,consumerSecret,accessToken);
    shareText= edttweetnow.getText().toString();
    status = twitter.updateStatus(shareText);
    int statusId = (int)status.getId();

    Toast.makeText(TweetLoad.this, "Tweet Successfull", Toast.LENGTH_LONG).show();

} catch (TwitterException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    Toast.makeText(TweetLoad.this, e.toString(), Toast.LENGTH_LONG).show();
}
共享文本是存储编辑文本数据的字符串。
TweetLoad
是当前类名。 做吧

共享文本是存储编辑文本数据的字符串。
TweetLoad
是当前类名。
做吧

请把代码也贴出来。。我怀疑您是否正确创建了AccessToken,请同时发布代码。。我怀疑你是否正确地创建了AccessToken Thanx heiko,但我已经用它来获取推文,而且它是有效的,所以我认为这不是问题。对于凭证或消费者代币,有一些请求,如公共时间线,不需要身份验证-请参阅twitter4j.org上的矩阵-thanx heiko,但我使用了相同的方法来获取推文,它可以工作,因此我认为这没有问题。对于凭证或消费者代币,有一些请求,如公共时间线,不需要验证-请参阅twitter4j.org上的矩阵-shikh谢谢…但它现在产生了一个新的问题。编辑您的代码后,我可以发布tweet,但现在没有登录,oage来了,用按钮和编辑框来指导我的主要布局,当我发布时它也发布了推特。你认为它对应用程序的ri8行为吗?这是正确的行为。该应用程序存储凭据,并在每次启动应用程序时使用它们。直到发生以下情况之一:a)用户撤销对你的应用程序的权限,b)你使用你的appok…thnx注销twitter。因此tht意味着一旦我登录,ti将保存我的凭据,直到我通过appyes注销,或者通过app,或者你撤销对twitter的权限。com@SheikhAman我想显示弹出对话框(更新twitter状态)其中包含编辑文本、取消按钮和更新状态按钮,用户可以在编辑文本中输入文本,单击更新状态按钮后,其状态将更新,并应在更新其状态后给我一个响应。。。你是这样实施的吗?????或者是否有可能实现这一点??在androidshikh中,谢谢…但现在它产生了一个新问题。编辑你的代码后,我可以发布推文,但现在没有登录。oage来了,用按钮和编辑框来指导我的主布局,当我发布推文时,它也会发布。你认为它的ri8行为适用于应用程序吗?这是正确的行为。该应用程序存储凭据,并在每次启动应用程序时使用它们。直到出现以下情况之一:a)用户撤销对你的应用程序的权限,b)你使用你的appok…thnx注销twitter。因此tht意味着一旦我登录,ti将保存我的凭据,直到我通过appyes注销,或者通过app