1

让我先解释一下我的场景。我正在使用 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,但不确定从我的代码中捕获它是否是正确的方法......有什么建议吗?

谢谢 !亚历克斯

4

1 回答 1

1

如果您尝试任何scribe示例,您会看到输入错误的验证程序代码会立即导致OAuthException(请注意,这是一个OAuthException虽然,因为您正确声明它继承自RuntimeException,这是设计使然,因为我 100% 反对检查异常)。

问题出在服务器端,因为您所说的它使 http 连接保持打开很长时间甚至可能永远打开,直到发生默认连接超时。

也许如果您在 Api 论坛中提问,您会得到更好的答复,同时使用 scribe 的调试模式(自 1.3.0 起新增)可以帮助您诊断大多数问题。

于 2012-02-21T01:53:09.997 回答