2014-01-29 2 views
5

Я довольно новичок в Scribe, но когда я пытаюсь авторизоваться через Twitter, возникает странная ошибка. Мой код в значительной степени то же самое, чем TwitterExample:Scribe странное неконтролируемое исключение с Twitter

 OAuthService service = new ServiceBuilder() 
      .provider(TwitterApi.class) 
      .apiKey("XXXXXXXXXXXXXX<<custom>>XXXXXXXXXXXXXXX") 
      .apiSecret("YYYYYYYYYYYYYYYY<<custom>>YYYYYYYYYYYYYYYYYYYYYYYYY") 
      .debug() 
      .build(); 

     Token requestToken = service.getRequestToken(); 

     Log.i("OAUTH LINK", service.getAuthorizationUrl(requestToken)); 

     Verifier verifier = new Verifier("verifier you got from the user"); 
     Token accessToken = service.getAccessToken(requestToken, verifier); 

     OAuthRequest request = new OAuthRequest(Verb.GET, PROTECTED_RESOURCE_URL); 
     service.signRequest(accessToken, request); 
     response = request.send(); 
     Log.i("OAUTH RESPONSE",response.getBody()); 

И отладочной возвращаемые:

  • I/System.out (1776): получение запроса маркера от http://api.twitter.com/oauth/request_token
  • I/System.out (1776): установка oauth_callback для OOB
  • I/System.out (1776): формирование подписи ...
  • I/System.out (1776): с помощью датчика base64: CommonsCodec
  • I/System.out (1776): базовая строка: POST & HTTP% 3A% 2F% 2Fapi.twitter.com% 2Foauth% 2Frequest_token & oauth_callback% 3Doob% 26oauth_consumer_key% 3DXXXXXXXXXXXXXXXXXXXXX% 26oauth_nonce% 3D1095830595% 26oauth_signature_method% 3DHMAC-SHA1 % 26oauth_timestamp% 3D1391024186% 26oauth_version% 3D1.0
  • I/System.out (1776): подпись: In0u/SlHz9cr5NLAQK56kALJ3hI =
  • I/System.out (1776): добавляются дополнительные параметры OAuth: {oauth_callback -> OOB, oauth_signature -> In0u/SlHz9cr5NLAQK56kALJ3hI =, oauth_version -> 1,0, oauth_nonce -> 1095830595, oauth_signature_method -> HMAC-SHA1, oauth_consumer_key -> XXXXXXXXXXXXXXXXXXXX, oauth_timestamp -> 1391024186}
  • I/System.out (1776): с помощью заголовка HTTP подпись
  • I/System.out (1776): отправка запроса ...
  • D/dalvikvm (1776): GC_FOR_ALLOC освободил 174K, 3% бесплатно 13188K/13575K, остановился 134ms
  • I/System.out (1776): ответ код состояния: 403
  • I/System.out (1776): тело ответа:
  • Вт/System.err (1776): Java. lang.IllegalArgumentException: Тело ответа неверно. Невозможно извлечь маркер из пустой строки
  • W/System.err (1776): в org.scribe.utils.Preconditions.check (Preconditions.java:84)
  • Вт/System.err (1776): в org.scribe.utils.Preconditions.checkEmptyString (Preconditions.java:44)
  • Вт/System.err (1776): в org.scribe.extractors.TokenExtractorImpl.extract (TokenExtractorImpl.java:26)
  • Вт/System.err (1776): в org.scribe.oauth.OAuth10aServiceImpl.getRequestToken (OAuth10aServiceImpl.java:64)
  • Вт/System.err (1776): в org.scribe.oauth.OAuth10aServiceImpl.getRequestToken (OAuth10aServiceImpl.java:40)
  • Вт/System.err (1776): в org.scribe.oauth.OAuth10aServiceImpl.getRequestToken (OAuth10aServiceImpl.java:45)
  • Вт/System.err (1776): в com.roundmesa.twitter.TwitterLoginTask. doInBackground (TwitterLoginTask.java:45)
  • Вт/System.err (1776): в com.roundmesa.twitter.TwitterLoginTask.doInBackground (TwitterLoginTask.java:1)
  • Вт/System.err (1776): в android.os.AsyncTask $ 2.call (AsyncTask.java:264)
  • Вт/System.err (1776): в java.util.concurrent.FutureTask $ Sync.innerRun (FutureTask.java:305)
  • W/System.err (1776): at java.util.concurrent.FutureTask.run (FutureTask.java:137)
  • W/System.err (1776): at android.os.AsyncTask $ SerialExecutor $ 1.run (AsyncTask.java: 208)
  • Вт/System.err (1776): в java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1076)
  • Вт/System.err (1776): в java.util.concurrent. ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:569)
  • W/System.err (1776): в java.lang.Thread.run (Thread.java:856)
  • Кто-то нашел эту ошибку? (Он должен быть абсолютно для новичков, но я не мог найти ничего подобного там ...

    Спасибо!

    +0

    Ответ, который вы выбрали, - это не ответ, а вопрос на самом деле, просто FYI. –

    ответ

    4

    Я получаю ту же ошибку, я использую книжник 1.1.0 баночку в моем коде Android.

    final OAuthS е р в сервис = новый ServiceBuilder() .provider (TwitterApi.SSL.class) -> что такое точное имя класса, мы должны использовать here..my баночку имеет только TwitterApi

    +0

    Предлагаю вам перейти на последнюю версию Scribe. В соответствии с этим списком изменений API SSL Twitter был добавлен только в версии 1.2: https://github.com/fernandezpablo85/scribe-java/blob/master/changelog.txt – kermit11

    6

    Это случилось со мной, а в последнее время. Проблема заключается в том, что Twitter начал отказывать регулярные соединения и по умолчанию , Scribe не использует SSL исправление довольно просто:. вместо того, чтобы использовать регулярные Scribe Twitter класса API, с помощью SSL одно:

    final OAuthService service = new ServiceBuilder() 
    .provider(**TwitterApi.SSL.class**) 
    .apiKey(...) 
    .apiSecret(...) 
    .callback(...) 
    .build(); 
    
    Смежные вопросы