Чего ожидать, если Verifier неверен - PullRequest
1 голос
/ 20 февраля 2012

Позвольте мне сначала объяснить мой сценарий.Я использую Scribe для подключения через Oauth к API, который не поддерживается Scribe напрямую.Тем не менее, сервер, к которому я подключаюсь, требует ввода 4-значного числа в качестве последнего шага для возможности создания accessToken.

Хотя это прекрасно работает, когда пользователь вводит 4 цифры неправильно,приложение работает вечно, никаких ошибок или исключений не выдается (насколько я понимаю).Вот код, который я использую:

//verifierString has the 4-digit number
verifier = new Verifier(verifierString);
Logger.debug("Trading the Request Token for an Access Token...");
accessToken = service.getAccessToken(requestToken, verifier);

Приложение остается в getAccessToken навсегда.Интересно, есть ли способ контролировать это, поскольку вполне возможно, что пользователи неправильно введут 4 цифры.Я проверил код для getAccessToken, Oauth 1.0, так как это тот, который я использую:

public Token getAccessToken(Token requestToken, Verifier verifier)
{
    config.log("obtaining access token from " + api.getAccessTokenEndpoint());
    OAuthRequest request = new OAuthRequest(api.getAccessTokenVerb(), api.getAccessTokenEndpoint());
    request.addOAuthParameter(OAuthConstants.TOKEN, requestToken.getToken());
    request.addOAuthParameter(OAuthConstants.VERIFIER, verifier.getValue());
    config.log("setting token to: " + requestToken + " and verifier to: " + verifier);
    addOAuthParams(request, requestToken);
    appendSignature(request);
    Response response = request.send();
    return api.getAccessTokenExtractor().extract(response.getBody());
}

Только кажется, что send () генерирует исключение RuntimeException, но не уверен, что перехват его из моего кодаправильный способ сделать это .... какие-либо предложения?

Спасибо!Alex

1 Ответ

1 голос
/ 21 февраля 2012

Если вы попробуете любой из scribe примеров, вы увидите, что ввод неправильного кода верификатора приводит к немедленному OAuthException (обратите внимание, что это OAuthException, хотя, как вы правильно заявили, он наследует от RuntimeException, это намеренно, так как я на 100% против проверенных исключений).

Проблема на стороне сервера, потому что, как вы говорите, она поддерживает http-соединение долгое время или, возможно, даже навсегда, до тех пор, покаистекает время ожидания соединения по умолчанию.

Возможно, если вы спросите на форумах Api, вы получите лучший ответ, а также режим scribe debug (новый с 1.3.0) поможет вам диагностировать большинство проблем,

...