Twitter update status

Hi, I am integrating twitter into android via twitter4j. I can successfully read tht tweets posted by me.


Now I'm trying to tweet from it. But I can not.


I get a strange warning as shown below:


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) 

although I installed my application on Twitter as read and write, it says that I can use it for reading only.



Help me figure it out

0
source share
3 answers

Posting a tweet on Twitter is different than how to get a timeline.

Given Twitter4J, the scenarios may be as follows:

This requires that you have an instance of the Twitter class that is allowed.

To complete the timeline, follow these steps:

 Twitter twitter = new TwitterFactory().getInstance(); twitter.setOAuthConsumer(consumerKey, consumerSecret); RequestToken requestToken = twitter.getOAuthRequestToken(CALLBACKURL); ... ... 

After successfully validating OAuth, you will get the oauth_verifier variable, and then create an AccessToken with the following lines:

 AccessToken accessToken = twitter.getOAuthAccessToken(requestToken,oauth_verifier); String token = accessToken.getToken(), secret = accessToken.getTokenSecret(); 

Save the above token and secret somewhere, it will be used when creating the AccessToken later.

Now the code to update the status:

 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(); 

This will update the My First Status Update message on your timeline and get the status ID in the statusId variable.

For a working example of using OAuth to implement twitter login and get the first tweet of your timeline, click this link to my blog post.

I’m sure that after a little modification of this and using the above code in it, you can also convert it to a tweet posting code!

+4
source
 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(); } 

Share text is a string in which text editing data is stored. TweetLoad is the current class name. Do it

+1
source

The first line says: 02-01 16: 28: 43.298: WARN / System.err (729): 401: Authentication credentials are missing or incorrect.

Either you do not log in at all, or with the wrong credentials. Twitter login is not trivial anymore with oAuth. But when you have already registered your application, you must have a user token + secret to work.

Take a look at twitter 4j docs , for example, the code or Zwitscher source code for an Android application using twitter4j communicates with Twitter.

0
source

Source: https://habr.com/ru/post/1338392/