2012-12-07 19 views
5

jestem coraz Twitter poświadczeń z Androidem AccountManager stosując następujący kod:Korzystanie Android AccountManager Twitter poświadczenia stworzyć 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); 

Używam wartości zwracane z callbacków Aby skonfigurować obiekt Twitter4J Twitter:

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

Ale to generuje następujący wyjątek podczas wywoływania verifyCredentials():

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) 

Próbowałem wywoływać invalidatorAuthToken na AccountManager przed zażądaniem tokenów, ale to nie miało żadnego znaczenia.

Mogę pomyślnie wywoływać verifyCredentials podczas ustawiania wartości tokena i tokenSecret na te dostarczone przez Twitter dla mojej aplikacji, ale muszę mieć możliwość korzystania z aktualnych danych uwierzytelniających użytkowników urządzenia twitter.

Czy są inne kroki wymagane do użycia tokenu i tajnych wartości tokena zwróconych z AccountManager do skonfigurowania AccessToken?

To zostało przetestowane na HTC Evo z systemem Android 2.3.5.

+0

Jedna uwaga: Nie sądzę, że 'invalidateAuthToken' działa bez przekazywania bieżącego łańcucha znaków. – devnate

+0

Mam również ten sam problem! Nie mam pojęcia jak go rozwiązać –

Odpowiedz

0

Sprawdź, czy zegar/czas w telefonie jest prawidłowy.

Problem polega na tym, że czas serwera Twittera nie odpowiada czasowi telefonu.

+0

Próbowałem tego, mogę potwierdzić, że zegar jest ustawiony prawidłowo. Działa również, jeśli przekazuję istniejące wartości tokenu i tokenSecret, ale nie wtedy, gdy używam tych wartości z AccountManager. –

0

muszę być w stanie wykorzystać obecne użytkownicy urządzeń twitter poświadczenia

Niestety, jest to not possible.