использование scribe-java и evernote java API не может получить правильный ответ oauth

Я хочу разработать функцию синхронизации Evernote в своем Java-приложении.

Итак, я загружаю исходный код, как сказал мне evernote, и mvn правильно получает пакет jar.

И я тоже скачиваю scribe-java. Я хочу использовать scribe java для получения токена oauth.

Я был так счастлив, когда увидел, что в scribe-java есть класс evernoteapi.

Но у меня есть такое исключение:

" org.scribe.exceptions.OAuthException: Неверный текст ответа. Невозможно извлечь токен и секрет из этого:

'<html>
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=9,chrome=1" />
<meta name="viewport" content="width=device-width,initial-scale=1" />
<link rel="Shortcut Icon" href="/favicon.ico" type="image/x-icon" />
<link rel="stylesheet" href="/redesign/global/css/reset.css" />

<link rel="stylesheet" href="/redesign/global/css/fonts.css" media="all" />

<link rel="stylesheet" href="/redesign/global/css/header.css" />
<link rel="stylesheet" href="/redesign/global/css/layout.css" />

<title>Evernote Error</title>
</head>
<body>
  <div class="header">
    <div class="logo-bar">
      <a class="evernote-logo" href="https://sandbox.evernote.com/Home.action?/">Evernote</a></div>
  </div>
  <div id="container-boundingbox" class="wrapper">
    <div id="container" class="wrapper">
      <div class="main">
        <div class="page-header">
          <h1>
            Oops, we encountered an error.</h1>
        </div>
        <div>
          <p>
            Sorry, we've encountered an unexpected error.</p>
        </div>
        <div class="clear"></div>
      </div>
    </div>
    <div class="shadow wrapper">
      <img src="/redesign/global/img/desktop-shadow-full.png" />
    </div>
    <div class="footer wrapper">
      <a class="footer-entry" href="https://sandbox.evernote.com/Home.action?/tos/">Terms of Service</a><a class="footer-entry" href="https://sandbox.evernote.com/Home.action?/privacy/">Privacy Policy</a><span class="footer-entry last">Copyright 2014 Evernote Corporation. All rights reserved.</span>
    </div>
  </div>
</body>
</html>'

"

Это исключение возникает в строке Token requestToken = service.getRequestToken();:

         OAuthService service = new ServiceBuilder()
        .provider(EvernoteApi.Sandbox.class)
        .apiKey("your key")
        .apiSecret("your secret")
        .build();

         Token requestToken = service.getRequestToken();

         String authUrl = service.getAuthorizationUrl(requestToken);

Я погуглил и до сих пор не знаю...


person MengMeng    schedule 23.01.2014    source источник


Ответы (1)


Я думаю, вам не хватает URL-адреса обратного вызова.

  OAuthService service = new ServiceBuilder()
    .provider(EvernoteApi.Sandbox.class)
    .apiKey("YOUR CONSUMER_KEY")
    .apiSecret("YOUR CONSUMER_SECRET")
    .callback("YOUR CALLBACK URL")
    .build();

Вы также можете увидеть, как это работает с этот образец приложения.

person kentaro    schedule 23.01.2014
comment
привет Кентаро. Для чего используется URL-адрес обратного вызова? и как это выглядит? Не могли бы вы привести пример. - person MengMeng; 24.01.2014
comment
После авторизации приложения на странице Evernote OAuth оно перенаправляется на указанный URL-адрес обратного вызова. Здесь вы можете увидеть, как работает OAuth. dev.evernote.com/doc/articles/authentication.php - person kentaro; 24.01.2014
comment
Некоторые классы API, такие как SinaWeiboApi, могут использовать OAuthService без обратного вызова. Почему я должен передать строку обратного вызова в службу? Я не понимаю этого. Я прочитал введение, которое вы мне даете. Все еще не понимаю. - person MengMeng; 26.01.2014
comment
К сожалению, на данный момент на сервере Evernote обязательно использовать OAuth. - person kentaro; 27.01.2014
comment
Привет большое спасибо! Теперь мое приложение может без проблем работать в песочнице. Вот мой код. github.com/xinmeng2011/eatYourCode Ваш совет приветствуется - person MengMeng; 28.01.2014