I'm using Twitter4J library for OAuth authentication but I get "Authentication Challenge is Null Exception" even before It opens the Twitter login page.
Here is the code.
Twitter twitter = new TwitterFactory().getInstance();
try
{
twitter.setOAuthConsumer(Startup.TWITTER_KEY, Startup.TWITTER_SECRET);
String callbackURL = "twitter-client:///";
RequestToken rToken = twitter.getOAuthRequestToken(callbackURL);
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(rToken.getAuthenticationURL())));
}
catch(IllegalStateException e)
{
// access token is already available, or consumer key/secret is not set.
if(!twitter.getAuthorization().isEnabled()){
System.out.println("OAuth consumer key/secret is not set.");
System.exit(-1);
}
}
catch(Exception e)
{
Toast.makeText(Home.this, "Network Host not responding: "+e.getMessage(),Toast.LENGTH_SHORT).show(); //This exception.
}
Exception:
E/Home ( 4393): Received authentication challenge is null E/Home ( 4393): Received authentication challenge is nullRelevant discussions can be on the Internet at: E/Home ( 4393): http://www.google.co.jp/search?q=6c607809 or E/Home ( 4393): http://www.google.co.jp/search?q=0f1d8134 E/Home ( 4393): TwitterException{exceptionCode=[6c607809-0f1d8134 cab4c0ac-d492a113], statusCode=-1, retryAfter=0, rateLimitStatus=null, version=2.2.2} E/Home ( 4393): at twitter4j.internal.http.HttpClientImpl.request(HttpClientImpl.java:204) E/Home ( 4393): at twitter4j.internal.http.HttpClientWrapper.request(HttpClientWrapper.java:65) E/Home ( 4393): at twitter4j.internal.http.HttpClientWrapper.post(HttpClientWrapper.java:102) E/Home ( 4393): at twitter4j.auth.OAuthAuthorization.getOAuthRequestToken(OAuthAuthorization.java:108) E/Home ( 4393): at twitter4j.TwitterBaseImpl.getOAuthRequestToken(TwitterBaseImpl.java:271) E/Home ( 4393): at com.sharj.trafik.view.Home.askOAuth(Home.java:157) E/Home ( 4393): at com.sharj.trafik.view.Home.access$0(Home.java:143) E/Home ( 4393): at com.sharj.trafik.view.Home$3.onClick(Home.java:110) E/Home ( 4393): at android.view.View.performClick(View.java:2485) E/Home ( 4393): at android.view.View$PerformClick.run(View.java:9080) E/Home ( 4393): at android.os.Handler.handleCallback(Handler.java:587) E/Home ( 4393): at android.os.Handler.dispatchMessage(Handler.java:92) E/Home ( 4393): at android.os.Looper.loop(Looper.java:130) E/Home ( 4393): at android.app.ActivityThread.main(ActivityThread.java:3683) E/Home ( 4393): at java.lang.reflect.Method.invokeNative(Native Method) E/Home ( 4393): at java.lang.reflect.Method.invoke(Method.java:507) E/Home ( 4393): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) E/Home ( 4393): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) E/Home ( 4393): at dalvik.system.NativeStart.main(Native Method) E/Home ( 4393): Caused by: java.io.IOException: Received authentication challenge is null E/Home ( 4393): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.processAuthHeader(HttpURLConnectionImpl.java:1153) E/Home ( 4393): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.processResponseHeaders(HttpURLConnectionImpl.java:1095) E/Home ( 4393): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.retrieveResponse(HttpURLConnectionImpl.java:1048) E/Home ( 4393): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:726) E/Home ( 4393): at org.apache.harmony.luni.internal.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:121) E/Home ( 4393): at twitter4j.internal.http.HttpResponseImpl.(HttpResponseImpl.java:35) E/Home ( 4393): at twitter4j.internal.http.HttpClientImpl.request(HttpClientImpl.java:168) E/Home ( 4393): ... 18 more
It contains following links, but Google doesn't have much on this.
I had the same problem. It turned out that if the time stamp on the oAuth call is incorrect, the server returns a 401 status error which on Android devices causes the "Received authentication challenge is null" exception to be thrown. All of the devices that were having this problem had incorrect times, and fixing the times fixed the problem.
Perhaps this is your issue as well?