我正试图从facebook获取access_token。首先,我使用网址重定向到Facebook,如下所示
https://graph.facebook.com/oauth/authorize?type=user_agent&client_id=7316713919&redirect_uri=http://whomakescoffee.com:8080/app/welcome.jsf&scope=publish_stream
然后我有一个获取网址的监听器。
FacesContext fc = FacesContext.getCurrentInstance();
HttpServletRequest request =
(HttpServletRequest) fc.getExternalContext().getRequest();
String url = request.getRequestURL().toString();
if (url.contains("access_token")) {
int indexOfEqualsSign = url.indexOf("=");
int indexOfAndSign = url.indexOf("&");
accessToken = url.substring(indexOfEqualsSign + 1, indexOfAndSign);
handleFacebookLogin(accessToken, fc);
}
但它永远不会进入if ..
如何在#之后检索参数而不是在?之后的常规参数。
网址看起来像
http://benbiddington.wordpress.com/#access_token=
116122545078207|
2.1vGZASUSFMHeMVgQ_9P60Q__.3600.1272535200-500880518|
QXlU1XfJR1mMagHLPtaMjJzFZp4
答案 0 :(得分:4)
网址编码错误。它是XML-escaped而不是URL-encoded。 #
是URL中的保留字符,表示永远不会发送回服务器端的客户端片段。
网址应如下所示:
您可以使用java.net.URLEncoder
。