Получить параметры URL после # в Java - PullRequest
2 голосов
/ 10 ноября 2010

Я пытаюсь получить access_token от Facebook. Сначала я перенаправляю на Facebook, используя URL-адрес, как показано ниже

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

Тогда у меня есть слушатель, который получает URL.

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);
                }

Но это никогда не попадет внутрь, если ..

Как получить параметр, когда он идет после # вместо обычного параметра после?.

URL выглядит примерно так:

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

1 Ответ

4 голосов
/ 10 ноября 2010

URL-адрес неверно закодирован.Это XML-экранированный вместо URL-кодированный .# - это зарезервированный символ в URL, который представляет фрагмент на стороне клиента, который никогда не отправляется обратно на сторону сервера.

URL-адрес должен больше выглядеть следующим образом:

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

Для этого вы можете использовать java.net.URLEncoder.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...