2012-12-07 7 views
5

Ich erhalte Twitter-Anmeldeinformationen aus dem Android Accountmanager mit dem folgenden Code zu erstellen:Mit Android Account Twitter-Anmeldeinformationen Twitter4J AccessToken

AccountManager am = AccountManager.get(this); 
Account account = am.getAccountsByType("com.twitter.android.auth.login")[0]; 
am.invalidateAuthToken("com.twitter.android.auth.login", null); 
am.getAuthToken(account, "com.twitter.android.oauth.token", null, this, createCallback(TOKEN), null); 
am.getAuthToken(account, "com.twitter.android.oauth.token.secret", null, this, createCallback(TOKEN_SECRET), null); 

Ich verwende die Werte aus dem Callbacks Setup zurück ein Twitter4J Twitter Objekt:

Twitter twitter = new TwitterFactory().getInstance(); 
twitter.setOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET); 
twitter.setOAuthAccessToken(new AccessToken(token, tokenSecret)); 
User user = twitter.verifyCredentials(); 

Aber es generiert die folgende Ausnahme, wenn verifyCredentials() aufrufe:

Exception connecting to twitter 
    Received authentication challenge is null 
    Relevant discussions can be found on the Internet at: 
    http://www.google.co.jp/search?q=6f0f59ca or 
    http://www.google.co.jp/search?q=200bae40 
    TwitterException{exceptionCode=[6f0f59ca-200bae40 1de2170b-e16a1586], statusCode=-1, message=null, code=-1, retryAfter=-1, rateLimitStatus=null, version=3.0.2} 
    at twitter4j.internal.http.HttpClientImpl.request(HttpClientImpl.java:192) 
    at twitter4j.internal.http.HttpClientWrapper.request(HttpClientWrapper.java:61) 
    at twitter4j.internal.http.HttpClientWrapper.get(HttpClientWrapper.java:89) 
    at twitter4j.TwitterBaseImpl.fillInIDAndScreenName(TwitterBaseImpl.java:126) 
    at twitter4j.TwitterImpl.verifyCredentials(TwitterImpl.java:578) 

Ich habe versucht, invalidateAuthToken auf dem AccountManager aufzurufen, bevor ich die Token anfordere, aber das hat keinen Unterschied gemacht.

Ich kann verifyCredentials erfolgreich aufrufen, wenn ich die Werte token und tokenSecret auf die von Twitter für meine App angegebenen Werte festlege, aber ich muss in der Lage sein, die aktuellen twitter-Anmeldeinformationen der Gerätebenutzer zu verwenden.

Sind weitere Schritte erforderlich, um die vom AccountManager zurückgegebenen Token- und Token-Secret-Werte zum Einrichten eines AccessToken zu verwenden?

Dies wurde auf einem HTC Evo mit Android 2.3.5 getestet.

+0

Eine Anmerkung: Ich glaube nicht, dass 'invalidateAuthToken' funktioniert, ohne die aktuelle Token-Zeichenfolge zu übergeben. – devnate

+0

Ich habe auch das gleiche Problem! Keine Ahnung, wie es zu lösen ist –

Antwort

0

Überprüfen Sie, ob die Uhrzeit auf Ihrem Telefon korrekt ist.

Das Problem ist, dass die Zeit des Twitter-Servers nicht mit der Uhrzeit des Telefons übereinstimmt.

+0

Ich habe das ausprobiert, ich kann bestätigen, dass die Uhr richtig eingestellt ist. Es funktioniert auch, wenn ich vorhandene Token- und tokenSecret-Werte übergebe, nur nicht, wenn diese Werte vom AccountManager verwendet werden. –

0

Ich brauche die aktuellen Gerätebenutzer Anmeldeinformationen twittern

Leider nutzen zu können, diese not possible ist.