0

我正在尝试根据使用 jsp 和 servlet 的 Facebook 服务器端身份验证流程登录到 facebook。我成功登录到我的 fb 帐户,但是当 fb 重定向到我的应用程序时,它会在字符“#”之后发送参数(状态...)。我在看这个: 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>(感谢@乔恩汉娜)

于 2012-08-28T08:29:35.550 回答