1

最初に私のシナリオを説明しましょう。Scribe で直接サポートされていない API に Oauth 経由で接続するために Scribe を使用しています。つまり、私が接続しているサーバーでは、accessToken を作成できるようにするための最後のステップとして、4 桁の数字を入力する必要があります。

これはうまく機能していますが、ユーザーが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 フォーラムで質問すると、より良い回答が得られるでしょう。また、スクライブのデバッグモード (1.3.0 以降の新機能) を使用すると、ほとんどの問題を診断するのに役立ちます。

于 2012-02-21T01:53:09.997 に答える