1

Javaでgooglegdataを使用して3本足のOAuthを実装するJavaアプリケーションを開発しています。このアプリケーションはGoogleAppEngineに登録されています。最初の段階では、許可されていないリクエストトークンを正常に取得しています。そのトークンをセッションに保存し、createUserAuthorizationUrl(oauthParameters)を使用してリンクを作成しています。次に、リンクをクリックすると、「アクセス許可ページ」にリダイレクトされます。

これで、アクセスを許可しても、このページは表示されません。しかし、それは私を私のコールバックURLにリダイレクトします。ただし、これは適切なようです。ただし、 [マイアカウント]の下にエントリは追加されません。ここでは、oauth_tokenをセッションに保存しています。

リダイレクトされると、そのページのURLにはoauth_tokenとoauth_verifierの両方が含まれます。さて、このコールバックURLには、送信ボタンとforのアクションをaccessTokenServlet.javaに設定しています。このサーブレットのコードは次のとおりです。

現在、アクセストークンを取得するためのリクエストを送信しています。私のコードは:

            GoogleOAuthParameters oauthParameters = new GoogleOAuthParameters();
            oauthParameters.setOAuthConsumerKey(CONSUMER_KEY);
            oauthParameters.setOAuthConsumerSecret(CONSUMER_SECRET);
            oauthParameters.setOAuthType(OAuthParameters.OAuthType.THREE_LEGGED_OAUTH);

            GoogleOAuthHelper oauthHelper = new GoogleOAuthHelper(new OAuthHmacSha1Signer());

            oauthParameters.setOAuthToken(request.getSession().getAttribute("oauth_token").toString());
            oauthParameters.setOAuthTokenSecret(request.getSession().getAttribute("oauth_token_secret").toString());

            try {
                String accessToken = oauthHelper.getAccessToken(oauthParameters);
                out.println("Access Token : " + accessToken);
            } catch (OAuthException e) {
                //System.out.print("Response Status : " + response.getStatus());
                out.println("Exception : ");
                e.printStackTrace();
                return;
            }

送信ボタンをクリックすると、「アクセストークン:」と何も出力されません。トークンは返されません!

リクエストトークン自体を承認する段階で間違っています。しかし、私は得ていません、どのような問題が発生しましたか?

4

1 に答える 1

0

oauth_callbackリンクしたベリファイアのあるページは、 ofを渡した場合にのみoob表示されます。これは、ベリファイアを帯域外に移動することを示しています。oobデバッグ以外には使用しないことを強くお勧めします。代わりに、コールバックURLを設定し、クエリ文字列からベリファイアを取得する必要があります。

上記のコードでは、OAuthパラメーターにベリファイアを設定するものが何も表示されていないため、問題が発生している可能性があります。また、エラー処理の方法もあまり行っていません。これは、OAuthフローの非常に重要な部分です。たとえば、機能するようになったら、OAuthプロセスをキャンセルして、アプリケーションがどのように処理するかを確認してください。

プロセスを完全に完了し、アップグレードされたアクセストークンを取得した後にのみ、発行済みトークンリストにエントリが表示されます。

于 2011-02-01T20:24:09.900 に答える