【问题标题】:What to expect when the Verifier is wrong当验证者出错时会发生什么
【发布时间】:2012-02-21 09:53:09
【问题描述】:

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

谢谢! 亚历克斯

【问题讨论】:

    标签: java oauth scribe


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢Pablo,很高兴知道,是的,我认为问题出在服务器端。不过我得检查一下...再次感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-04
    相关资源
    最近更新 更多