2010-07-23 2 views
13

Я пробую следующее примерное приложение для twitter oauth.android twitter retrieveRequestToken 401 по запросу token

http://www.androidsdkforum.com/android-sdk-development/3-oauth-twitter.html

private void askOAuth() { 
     try { 
      consumer = new CommonsHttpOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET); 
      provider = new DefaultOAuthProvider("http://twitter.com/oauth/request_token", 
               "http://twitter.com/oauth/access_token", 
               "http://twitter.com/oauth/authorize"); 
      String authUrl = provider.retrieveRequestToken(consumer, CALLBACK_URL); 
      Toast.makeText(this, "Please authorize this app!", Toast.LENGTH_LONG).show(); 
      this.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(authUrl))); 
     } catch (Exception e) { 
      Log.e(APP, e.getMessage()); 
      Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show(); 
     } 
    } 

Когда я запускаю следующий код дает исключение следующим

«oauth.signpost.exception.OAuthNotAuthorizedException: Ошибка авторизации (сервер ответил с 401) Это может произойти, если. ключ потребителя был неправильным или подписи не совпадали ».

на этой линии String authUrl = provider.retrieveRequestToken(consumer, CALLBACK_URL);

я предоставил правильный «ключ» и «секрет» это твиттер дает мне неверный ключ и секрет?

+0

PLZ скажите мне, что положить в CALLBACK_URL ??? – Shruti

+0

URL-адрес вашей андроидной активности, который вызывается после твиттера, возвращает ответ –

+0

URL-адрес вашей андроид-активности, который будет вызываться один раз twitter, возвратил ответ –

ответ

1

наконец сделано, проверьте следующее после

android twitter outh tutorial callback problem

+0

ok Я спросил несколько раз «это приложение для twitter, настроенное как браузер?» –

+0

настроен как браузер. –

+0

Я понял, что вы отвечаете на свои вопросы, даже с помощью других пользователей, чтобы получить очки. – Jorgesys

8

У меня была такая же проблема. Он появился только на моем телефоне, но на эмуляторе и другом телефоне код работал нормально. После того, как вы опробовали несколько решений связанных вопросов без везения, в конечном итоге оказалось, что я не установил время и дату на телефоне dev, в котором нет сим-карты. Это привело к тому, что SSL-сертификаты были недействительными, а запрос OAuth - неудачным, а также все, что использовало HTTPS. После установки времени проблемы исчезли.

+0

Там, казалось, многие другими возможными причинами для того же вопрос тоже, но этот, который я не мог найти, предложил раньше, probabl потому что это не совсем проблема с Twitter или OAuth. – DonSteep

+4

+1, вы прямо сейчас устанавливаете дату и время на телефоне без SIM-карты. –

4

** 1) ** Установить дату и время до нужных значений, это поможет решить эту проблему. ****

2)

private OAuthConsumer consumer; 
private OAuthProvider provider; 
... 
... 
... 
provider = new CommonsHttpOAuthProvider (
       TWITTER_REQUEST_TOKEN_URL, 
       TWITTER_ACCESS_TOKEN_URL, 
       TWITTER_AUTHORIZE_URL); 

private void askOAuth() { 
     try { 
      consumer = new CommonsHttpOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET); 
      provider = new CommonsHttpOAuthProvider("http://twitter.com/oauth/request_token", 
               "http://twitter.com/oauth/access_token", 
               "http://twitter.com/oauth/authorize"); 

      provider.setOAuth10a(true); 

      String authUrl = provider.retrieveRequestToken(consumer, CALLBACK_URL); 
      Toast.makeText(this, "Please authorize this app!", Toast.LENGTH_LONG).show(); 
      this.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(authUrl))); 
     } catch (Exception e) { 
      Log.e(APP, e.getMessage()); 
      Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show(); 
     } 
    } 

3) ваше твиттер-приложение настроено как браузер? попробовать с этим клавишам:

Потребительский ключ

sdOjEI2cOxzTLHMCCMmuQ

Потребительский секрет

biI3oxIBX2QMzUIVaW1wVAXygbynuS80pqSliSDTc

+0

Я пытаюсь над кодом в эмуляторе и тестировал на устройстве, а также не работал в обоих условиях. Я попробую еще раз, установив дату и время эмулятора и попробую тогда. –

+0

@Faisal Я отредактировал ваш код в своем ответе. – Jorgesys

+0

Я пробовал это, но все еще не работал, получая такую ​​же ошибку. –

1

yes totramon is right ... Если вы столкнулись с проблемой только во время проверки подлинности, вам может потребоваться установить время устройства. Я столкнулся с той же проблемой и решил это решение. Также, если вы используете старый twitter api, вам нужно изменить его на стабильную версию api (2.1.4). Вы можете найти по следующей ссылке:

http://twitter4j.org/en/index.html

Наслаждайтесь ..

14

я потратил несколько часов на это. Кажется, вы должны установить ЛЮБОЕ значение URL-адреса обратного вызова на вкладке «Настройки» в панели разработчиков приложений Twitter. Сохранение пустого значения по умолчанию отключает динамические обратные URL-адреса.

Все учебники и вся информация, которую я нашел в Интернете, просто недействительны.Twitter удалил переключатель «Клиент/Веб-сайт».

Кроме того, OAuth проверяет наличие перекосов в часах.

+2

+1 Для меня работала настройка чего-то в URL-адресе обратного вызова (например, https://dev.twitter.com). –

+0

@gilm: Слишком поздно сказать, но я должен поблагодарить вас так много! –

+0

@gilm спасибо, что решил мою проблему. – Siddhesh

2

используя https вместо http в провайдере

+0

Это сработало для меня. благодаря! –