Исключение Twitter4J при проверке учетных данных

Я создаю приложение для Android, которое использует Twitter4J для чтения некоторой информации о пользователе.

Все работало нормально, но сегодня вечером, когда я запускаю приложение и пользователь входит в Twitter, я получаю исключение:

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

Это вызывает следующее исключение при вызове 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

Как я уже упоминал, это не менялось в течение нескольких недель, но внезапно перестало работать. Я также заметил, что если я анонимно создаю свой объект Twitter (не передавая имя пользователя и пароль), он все еще позволяет мне получать информацию/пользователей/статусы из твиттера (очевидно, VerCredentials() здесь не работает, так как это анонимный пользователь)

Кто-нибудь сталкивался с этой проблемой или похожей?

Заранее спасибо!


person rhinds    schedule 31.08.2010    source источник
comment
Вы можете проверить этот OAuth TUT: anddev.org/advanced -tutorials-f21/sending-a-tweet-t54389.html Показывает, как использовать Twitter4J с исходными файлами.   -  person Blundell    schedule 11.08.2011
comment
Спасибо, мне действительно удалось заставить его работать некоторое время назад, и я написал, что я сделал здесь: automateddeveloper.blogspot.com/2011/06/   -  person rhinds    schedule 11.08.2011


Ответы (1)


API Twitter больше не поддерживает обычную аутентификацию, вы должны изменить свое приложение, чтобы использовать OAuth, http://dev.twitter.com/pages/auth_overview, который также встроен в Twitter4J.

person Frank    schedule 31.08.2010
comment
Спасибо! Я рассмотрю этот вариант. Это что-то, что твиттер только что представил? это работало только вчера.. - person rhinds; 01.09.2010
comment
Они объявили, что сделают это некоторое время назад, и на самом деле собирались сделать это где-то в июле, но отложили это до чемпионата мира. Это было довольно легко не заметить. - person Frank; 01.09.2010
comment
Еще раз спасибо - я смотрел настройку OAuth; для моего приложения для Android я хочу, чтобы пользователи могли входить в Twitter, используя свои учетные данные, а затем публиковать обновления и т. д. Знаете ли вы, возможно ли это? Я выполняю шаги, чтобы запустить его, и мне просто нужно было ввести PIN-код, чтобы разрешить приложению доступ к моей учетной записи Twitter, должны ли все пользователи делать это? все ли клиенты Twitter должны проходить этот процесс? - person rhinds; 01.09.2010
comment
В дополнение к вышесказанному, поэкспериментировав с OAuth, я все еще получаю ту же ошибку из твиттера... есть идеи? - person rhinds; 01.09.2010
comment
Похоже, проблема на этой неделе не у меня одного... У HTC такая же проблема - рассмотрю мое решение oauth engadget.com/2010/09/01/ - person rhinds; 01.09.2010