2011-08-09 5 views
0

私はブラウザに直接URLを入力すると、それは右のページに来るFacebook認証:HttpServletResponse.sendRedirect(URL)はブラウザにURLを直接入力するのと異なりますか?

https://graph.facebook.com/oauth/authorize?client_id={client_id}&redirect_uri={redirect_uri}&scope={permission_scope}

にそれらをリダイレクトすることによって、Facebookのの許可要求ページに私のユーザーをリダイレクトしようとしています:ダイアログが表示されますユーザーが自分のアプリケーションに許可を受け入れるかどうかを尋ねます。

しかし、私は、サーバーで要求をリダイレクト送る:

response.sendRedirect("https://graph.facebook.com/oauth/authorize?client_id={client_id}&redirect_uri={redirect_uri}&scope={permission_scope}"); 

それは、大きなFacebookのロゴを持つページにユーザーを送信します。ユーザーがロゴをクリックすると、承認ページが通常通り表示されます。

私の応答で1つまたは2つが欠けていて、結果がブラウザに直接入力するのと違うのだろうかと思います。誰も同じ問題を抱えていますか?

+2

彼らは、302のリダイレクトを防ぐのですか?私は、ユーザーが意図されたページに「自分自身をリダイレクトする」ことを可能にする中間ページのために、これが当てはまることを見ることができます。 – Jeremy

答えて

2

これは、Facebookドメインのページを含むアプリケーションiFrame(apps.facebook.com上)を持つことができないためです。

あなたのリダイレクトを行うためにJavaScriptを使用する必要があります。

response.getWriter().println(
    "<script>" + 
    "top.location.href = \"https://graph.facebook.com/oauth/authorize?client_id={client_id}&redirect_uri={redirect_uri}&scope={permission_scope}\"" + 
    "</script>" 
); 
+0

素晴らしい!大いに感謝する :) –

関連する問題