开发者

Get url parameters after # in java

开发者 https://www.devze.com 2023-01-24 14:51 出处:网络
I am trying to get the access_token from facebook. First I redirect to facebook using an url as the following

I am trying to get the access_token from facebook. First I redirect to facebook using an url as the following

https://graph.facebook.com/oauth/authorize?type=user_agent&client_id=7316713919&redirect_uri=http://whomakescoffee.com:8080/app/welcome.jsf&scope=publish_stream

Then I have a listener that gets the url.

FacesContext fc = FacesContext.getCurrentInstance();
        HttpServletRequest request =
                (HttpServletRequest) fc.getExternalContext().getRequest();
String url = request.getRequestURL().toString();
                if (url.contains("access_token")) {
       开发者_C百科             int indexOfEqualsSign = url.indexOf("=");
                    int indexOfAndSign = url.indexOf("&");
                    accessToken = url.substring(indexOfEqualsSign + 1, indexOfAndSign);
                    handleFacebookLogin(accessToken, fc);
                }

But it never gets inside the if..

How do I retrieve the parameter when it comes after a # instead of a usual parameter after ?.

The url looks something like

http://benbiddington.wordpress.com/#access_token=
    116122545078207|
    2.1vGZASUSFMHeMVgQ_9P60Q__.3600.1272535200-500880518|
    QXlU1XfJR1mMagHLPtaMjJzFZp4


The URL is incorrectly encoded. It's XML-escaped instead of URL-encoded. The # is a reserved character in URL's which represents the client-side fragment which is never sent back to the server side.

The URL should more look like this:

https://graph.facebook.com/oauth/authorize?type=user_agent&client_id=7316713919&redirect_uri=http%3a%2f%2fwhomakescoffee.com%3a8080%2fapp%2fwelcome.jsf%26scope%3dpublish_stream

You can use java.net.URLEncoder for this.

0

精彩评论

暂无评论...
验证码 换一张
取 消