0

jspとサーブレットを使用したFacebookサーバー側認証フローに従ってFacebookにログインしようとしています。私はfbアカウントに正常にログインしましたが、fbがアプリにリダイレクトするとき、文字「#」の後にパラメーター(state ...)を送信します。私はこれを見ていました:http://facebook.stackoverflow.com/questions/4144878/get-url-parameters-after-in-java

しかし、私は彼らとは違う方法でそれをやっています。

これが私のコードです:

response.sendRedirect(response.encodeRedirectURL("http://www.facebook.com/dialog/oauth/?client_id=343473222406382" +
                "&redirect_uri=http://localhost:8080/accountsLogger&response_type=token&state=logged"));

そして私はにリダイレクトしています:

{http://localhost:8080/accountsLogger/#state=logged&access_token=AAAE4YxdpUO4BAILjJoj5GsFZBDir1YmZCy4ZC9BmZAOCAztC2QclKo46OSce7dzObL6lSzrYpRDgQycOzzhfbqThR6kVC16lmurC5X5oV1lIrsvI0h9D&expires_in=4329.}
4

2 に答える 2

2

FB API は (大部分) クライアント側で使用するために構築されています。URL のハッシュ部分 (「#」の後にある部分) は、ブラウザーによってサーバーに送信されることはありません (これが、取得できない理由です)。この情報がサーバー側で必要な場合は、accountsLogger ページ ( document.location.hash) で JavaScript を使用して取得し、別の URL で「ハッシュ パラメータ」を「通常の」URL パラメータに変換して、ページをその URL にリダイレクトする必要があります。

于 2012-08-28T08:28:00.220 に答える
1

後の URL#はサーバーに送信されません。もともとアンカーとして意図されていたもので、ダウンロードしたページで参照するものです。次に、ブラウザは次のことを行います。

GET /your/url.htm?param1=value&param2=value

最後にある場合#someanchor、ブラウザーはページを配置して、そのアンカーが表示されるようにします (存在する場合)。

古い学校のアンカー:

<a name="someanchor">Hello</a>

標準 HTML アンカー:

<p id="someanchor">Hello</p>(ありがとう@Jon Hanna)

于 2012-08-28T08:29:35.550 に答える