java - 当验证者出错时会发生什么

标签 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,但不确定从我的代码中捕获它是否是正确的方法......有什么建议吗?

谢谢! 亚历克斯

最佳答案

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

问题出在服务器端,正如你所说,它使http连接长时间保持打开状态,甚至可能永远保持打开状态,直到发生默认连接超时。

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

关于java - 当验证者出错时会发生什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9365714/

相关文章:

java - 如何在将消息传递给消费者之前对其进行过滤?

azure - Sharepoint API Headless 获取访问 token

.net - Facebook 身份验证 : call to https://graph. facebook.com/oauth/access_token 返回 400 错误请求

google-app-engine - OpenId Connect 端点返回 'not found'

java - scribe 1.3 share request to linkedin API return a 401 - unauthorized

java - 创建文件映射器

java - 为什么短类型参数的 Integer.toBinaryString 结果包括 32 位?

java - Dropwizard、Scribejava、Oauth 2.0 和 Github

java - 无法从 servlet 访问我的数据库

php - 使用授权代码流 (php) 从 Twitch API 获取用户名