Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

twitter4j.TwitterException: 401:Authentication credentials were missing or incorrect

Tags:

java

twitter

gwt

I am developing web based application in Java [GWT]
I am facing problem with TwitterException.
I used valid credential.
Twitter twitter = new Twitter(myTwitterId, myTwiterPwd);
when I call twitter.getFollowers() method

I got following Error Message

twitter4j.TwitterException: 401:Authentication credentials were missing or incorrect.

<?xml version="1.0" encoding="UTF-8"?>
<errors>
    <error code="53">Basic authentication is not supported</error>
</errors>

    at twitter4j.http.HttpClient.httpRequest(HttpClient.java:469)
    at twitter4j.http.HttpClient.get(HttpClient.java:412)
    at twitter4j.Twitter.get(Twitter.java:276)
    at twitter4j.Twitter.get(Twitter.java:228)
    at twitter4j.Twitter.getFollowersStatuses(Twitter.java:1363)
    at twitter4j.Twitter.getFollowers(Twitter.java:1350)
    at com.vaibhav.dealelephant.server.impl.TwitterServiceImpl.getTwitterFollowers(TwitterServiceImpl.java:49)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:562)
    at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:188)
    at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:224)
    at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    at java.lang.Thread.run(Thread.java:619)

I want to display My followers Images into My Website, but it throws exception after calling this method twitter.getFollowers() method. SO unable to get My follwers Images :(

Please provide me Easy solution for the same

Hope for the best co-operation from your side

Thanks in advance !!!

like image 323
StackOverFlow Avatar asked Sep 03 '10 14:09

StackOverFlow


2 Answers

Yes, your authentication is not working because Twitter made some recent changes regarding how it lets 3rd party code authenticate.

  • http://news.techworld.com/security/3237604/twitter-turns-on-oauth-api-authentication/
  • http://www.networkworld.com/news/2010/083110-twitter-api-has-new-third.html?hpg1=bn
  • http://www.wired.com/epicenter/2010/08/twitter-login-errors/
  • http://groups.google.com/group/twitter-api-announce/browse_thread/thread/f71eb68600996af8

In other words, Basic authentication has been turned off for the API.

  • https://apiwiki.twitter.com/Authentication

As Allain mentions, oAuth is the way to go.

like image 134
Jason Leveille Avatar answered Nov 12 '22 10:11

Jason Leveille


The code you posted is different than what I've seen in the past for connecting. I think (though I'm not sure) that oAuth is the preferred way of authenticating now.

Here's a blog that details using oAuth to connect.

like image 45
Allain Lalonde Avatar answered Nov 12 '22 11:11

Allain Lalonde