Я пытаюсь получить 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
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.
java.net.URLEncoder