2010-11-10 5 views
2

J'essaie d'obtenir le access_token de facebook. D'abord, je réoriente sur facebook en utilisant une URL commeObtenir les paramètres d'url après # dans java

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

suivante J'ai un auditeur qui obtient l'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); 
       } 

Mais il ne fait jamais dans la si ..

Comment puis-je récupérer le paramètre quand il vient après un # au lieu d'un paramètre d'habitude après?.

L'URL ressemble à quelque chose comme

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

Répondre

4

L'URL est mal codé. C'est XML-escaped au lieu de URL-encoded. Le # est un caractère réservé dans les URL qui représente le fragment côté client qui n'est jamais renvoyé au serveur.

L'URL doit plus ressembler à ceci:

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

Vous pouvez utiliser java.net.URLEncoder pour cela.

+0

Mais je suis redirigé vers ma page à nouveau, puis l'URL dans la barre d'adresse ressemble à http://whomakescoffee.com/app/welcome.jsf#access_token= 116122545078207 | 2.1vGZASUSFMHeMVgQ_9P60Q __. 3600.1272535200-500880518 | QXlU1XfJR1mMagHLPtaMjJzFZp4 – AnAmuser

+0

Voulez-vous dire que je ne peux pas obtenir le access_token du côté du serveur? – AnAmuser

+0

Pas si ce n'est pas codé en URL. – BalusC

Questions connexes