2012-01-31 20 views
7

Estoy usando la biblioteca Facebook php para autenticar usuarios a mi aplicación, está funcionando bien, pero por alguna razón Facebook agrega los caracteres #_=_ al final de mi retorno uri. Leí que lo hicieron si el parámetro redirect_uri no estaba configurado, pero lo tengo configurado, de hecho, me redirigen a esa URL con éxito después de iniciar sesión en Facebook.facebook api anexando # _ = _ a mi devolución uri

He aquí cómo obtener la URL de inicio de sesión:

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

Todo funciona bien es sólo una cosa cosmética supongo. ¿Alguien puede ayudarme?

¡Gracias de antemano!

+0

y se ha producido un error aquí, http://bugs.developers.facebook.net/show_bug.cgi?id = 20504 – Jashwant

Respuesta

4

En el blog de desarrolladores de Facebook, se indicó que, si configura explícitamente el parámetro redirect_uri, no obtendrá el #_=_ adjunto al uri de devolución de llamada. Pero este no es el caso. Aún obtienes esos caracteres incluso al establecer el campo redirect_url. Pero eso no tendrá ningún efecto en tu flujo.

Comprobar esto: Session Redirect Behavior - setting redirect_uri explicitely

+0

suspiro, así que supongo que es un facebook fall entonces :( – javiervd

2

Puede única deshacerse de este lado del cliente.

Se podría pensar que usted podría resolver este lado del servidor mediante la redirección a una dirección URL sin el ancla:

  • facebook redirige a http://MyFacebookRedirectUrl...#_=_
  • Entonces redirigimos a una nueva URL, sin el ancla

.... Pero el #_=_ reaparece por arte de magia en la barra de direcciones del navegador, ¿cómo?

Véase la respuesta de James Pearce en http://developers.facebook.com/bugs/318390728250352:

"Algunos navegadores añadirá el fragmento hash a partir de una dirección URL al final de una nueva dirección URL a la que han sido redirigida (si es que la nueva dirección URL misma no ejerza una fragmento hash) ".

y también esto:

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

Firefox, Chrome y Opera [y ahora IE10] volverá a incorporar una URL Fragmento después de una redirección HTTP/3xx ha tenido lugar, incluso aunque ese fragmento no estaba presente en la URL especificada por la cabecera Location sobre la respuesta de redirección

Así que si solo está haciendo redirecciones del lado del servidor desde su página de redirección de Facebook, tendrá que eliminar este lado del cliente.

La otra alternativa es redirigir el servidor a una URL que contenga un ancla con nombre diferente, pero eso no soluciona realmente el problema y no todos los navegadores harán lo mismo.