2012-01-31 14 views
7

Sto usando la libreria php di Facebook per autenticare gli utenti della mia app, sta funzionando bene ma per qualche ragione Facebook sta aggiungendo i caratteri #_=_ alla fine del mio ritorno uri. Ho letto che l'hanno fatto se il parametro redirect_uri non è stato impostato, ma è stato impostato, in effetti sono reindirizzato a quell'URL correttamente dopo aver effettuato l'accesso su Facebook.facebook api appending # _ = _ al mio ritorno uri

Ecco come ho l'url login:

$fbLoginUrl = $fb->getLoginUrl(array(
    'scope' => 'email,publish_stream,user_birthday,user_photos,friends_photos', 
    'redirect_uri' => 'http://myapp.net/auth' 
)); 

Tutto funziona bene è solo una cosa estetica immagino. Qualcuno può aiutarmi?

Grazie in anticipo!

+0

e un bug è archiviato qui, http://bugs.developers.facebook.net/show_bug.cgi?id = 20504 – Jashwant

risposta

4

Sul blog degli sviluppatori di Facebook, è stato detto che, se si imposta in modo esplicito il parametro redirect_uri, non sarà possibile aggiungereal callback uri. Ma questo non è il caso. Puoi ancora ottenere quei personaggi anche sul campo redirect_url. Ma ciò non avrà alcun effetto sul tuo flusso.

Controllare questo: Session Redirect Behavior - setting redirect_uri explicitely

+0

sigh quindi credo che sia un errore di Facebook quindi :( – javiervd

2

È possibile solo sbarazzarsi di questo lato client.

Si potrebbe pensare che si potrebbe risolvere questo lato server reindirizzando ad un URL senza l'ancora:

  • facebook reindirizza a http://MyFacebookRedirectUrl...#_=_
  • Poi reindirizziamo a qualche nuovo URL, senza l'ancoraggio

.... Ma lo #_=_ riappare per magia nella barra degli indirizzi del browser: come?

veda la risposta di James Pearce a http://developers.facebook.com/bugs/318390728250352:

"Alcuni browser aggiungerà il frammento hash da un URL al fine di un nuovo URL a cui sono stati reindirizzati (se questo nuovo URL per sé non ha un frammento di hashish). "

e anche questo:

http://blogs.msdn.com/b/ieinternals/archive/2011/05/17/url-fragments-and-redirects-anchor-hash-missing.aspx

Firefox, Chrome e Opera [e ora IE10] si ri-allegare un URL Frammento dopo un reindirizzamento HTTP/3xx ha avuto luogo, anche se quel frammento non era presente nell'URL specificato dalla intestazione Location sulla risposta di reindirizzamento

Pertanto, se esegui solo reindirizzamenti lato server dalla pagina di reindirizzamento di Facebook, dovrai rimuovere questo lato client.

L'altra alternativa è il reindirizzamento lato server a un URL che contiene un'ancora diversa denominata, ma che in realtà non risolve il problema e non tutti i browser faranno la stessa cosa.