Pergunta

Estou criando um aplicativo Android que usa o Twitter4J para ler algumas informações do usuário.

Tudo estava funcionando bem, mas esta noite, quando eu inicio o aplicativo e o usuário faz logon no Twitter, recebo uma exceção:

    Twitter twitter = new TwitterFactory().getInstance(twitterID,twitterPassword);
    u = twitter.verifyCredentials();

Isso lança a seguinte exceção na chamada verifyCredentials ():

08-31 20:36:59.084: WARN/System.err(454): twitter4j.TwitterException: https://api.twitter.com/1/account/verify_credentials.json
08-31 20:36:59.094: WARN/System.err(454):     at twitter4j.http.HttpClient.request(HttpClient.java:333)
08-31 20:36:59.094: WARN/System.err(454):     at twitter4j.http.HttpClientWrapper.request(HttpClientWrapper.java:66)
08-31 20:36:59.094: WARN/System.err(454):     at twitter4j.http.HttpClientWrapper.get(HttpClientWrapper.java:88)
08-31 20:36:59.094: WARN/System.err(454):     at twitter4j.Twitter.verifyCredentials(Twitter.java:1025)
08-31 20:36:59.104: WARN/System.err(454):     at com.tmm.android.soundbiter.TwitterInterface.<init>(TwitterInterface.java:65)
08-31 20:36:59.104: WARN/System.err(454):     at com.tmm.android.soundbiter.LogOnActivity.initTwitterUser(LogOnActivity.java:138)
08-31 20:36:59.104: WARN/System.err(454):     at com.tmm.android.soundbiter.LogOnActivity.startApplicationActivity(LogOnActivity.java:102)
08-31 20:36:59.104: WARN/System.err(454):     at com.tmm.android.soundbiter.LogOnActivity.onCreate(LogOnActivity.java:47)
08-31 20:36:59.104: WARN/System.err(454):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
08-31 20:36:59.104: WARN/System.err(454):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
08-31 20:36:59.104: WARN/System.err(454):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
08-31 20:36:59.104: WARN/System.err(454):     at android.app.ActivityThread.access$2200(ActivityThread.java:119)
08-31 20:36:59.115: WARN/System.err(454):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
08-31 20:36:59.115: WARN/System.err(454):     at android.os.Handler.dispatchMessage(Handler.java:99)
08-31 20:36:59.115: WARN/System.err(454):     at android.os.Looper.loop(Looper.java:123)
08-31 20:36:59.115: WARN/System.err(454):     at android.app.ActivityThread.main(ActivityThread.java:4363)
08-31 20:36:59.124: WARN/System.err(454):     at java.lang.reflect.Method.invokeNative(Native Method)
08-31 20:36:59.124: WARN/System.err(454):     at java.lang.reflect.Method.invoke(Method.java:521)
08-31 20:36:59.124: WARN/System.err(454):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
08-31 20:36:59.124: WARN/System.err(454):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
08-31 20:36:59.134: WARN/System.err(454):     at dalvik.system.NativeStart.main(Native Method)
08-31 20:36:59.134: WARN/System.err(454): Caused by: java.io.FileNotFoundException: https://api.twitter.com/1/account/verify_credentials.json
08-31 20:36:59.134: WARN/System.err(454):     at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1061)
08-31 20:36:59.134: WARN/System.err(454):     at org.apache.harmony.luni.internal.net.www.protocol.https.HttpsURLConnection.getInputStream(HttpsURLConnection.java:252)
08-31 20:36:59.134: WARN/System.err(454):     at twitter4j.http.HttpResponse.<init>(HttpResponse.java:83)
08-31 20:36:59.134: WARN/System.err(454):     at twitter4j.http.HttpClient.request(HttpClient.java:288)
08-31 20:36:59.134: WARN/System.err(454):     ... 20 more

Como mencionei, isso não mudou por semanas, mas de repente parou de funcionar. Também notei que, se instanciar meu objeto no Twitter anonimamente (não passe o nome de usuário e a senha), ainda me permite recuperar informações/usuários/statuses No Twitter (obviamente, verificouCredentials () não funciona aqui, pois é um usuário anônimo)

Alguém já experimentou esse problema ou similar?

Desde já, obrigado!

Foi útil?

Solução

A API do Twitter não suporta mais autenticação básica, você deve alterar seu aplicativo para usar oauth, http://dev.twitter.com/pages/auth_overview , que também está incorporado ao Twitter4J.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top