验证者错误时会发生什么

时间:2012-02-20 17:37:27

标签: java oauth scribe

让我先解释一下我的情景。我正在使用Scribe通过Oauth连接到Scribe不直接支持的API。也就是说,我要连接的服务器需要输入一个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,但不确定是否从我的代码中捕获它是正确的方法....任何建议?

谢谢! 亚历

1 个答案:

答案 0 :(得分:1)

如果您尝试了scribe个示例中的任何一个,您会看到输入错误的验证码会立即生成OAuthException(请注意它是OAuthException,但是正确状态它继承自RuntimeException,这是设计的,因为我100%反对已检查的异常。)

问题出在服务器端,因为你说它保持http连接长时间打开或者甚至永远打开,直到默认连接超时发生。

也许如果你在Api论坛上问你会得到更好的回应,同时使用scribe的调试模式(1.3.0以后的新版本)可以帮助你诊断大多数问题。