質問

最初に私のシナリオを説明させてください。 Scribeを使用して、Oauthを介してScribeによって直接サポートされていないAPIに接続しています。とはいえ、私が接続しているサーバーは、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);

アプリはgetCcesStokenに永遠にとどまります。ユーザーが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 (それはandであることに注意してください OAuthException ただし、正しく述べているように、それは継承します RuntimeException, 、これは、私がチェックされた例外に対して100%反対しているため、設計によるものです)。

問題はサーバー側にあります。デフォルトの接続タイムアウトが発生するまで、HTTP接続を長くまたは永久に開いたままにしておくと言うことです。

おそらく、APIフォーラムで尋ねると、Scribe'sを使用して、より良い応答が得られます。 デバッグ モード(1.3.0以降は新規)がほとんどの問題を診断するのに役立ちます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top