2011-12-02 38 views
12

Después de conectarme a mi aplicación Rails a través de Facebook, he agregado # _ = _ a mi URL.# _ = _ agregado a la URL por facebook

Intenté especificar un redirect_uri según lo especificado por FB pero no funcionó.
Solución de Javascript para eliminar los símbolos no ayuda. Intenté todo sin resultados.
¿Alguna sugerencia sobre cómo solucionar esto?

Mi configuración:

gem 'rails', '3.0.11' 
gem "devise", '1.5.2' 
gem "omniauth", '1.0.1' 
gem 'omniauth-facebook', '1.0.0rc2' 

module Facebook 
CONFIG = YAML.load_file(Rails.root.join("config/facebook.yml"))[Rails.env] 
FB_APP_ID = CONFIG['app_id'] 
FB_APP_SECRET = CONFIG['secret_key'] 
end 

Rails.application.config.middleware.use OmniAuth::Builder do  
provider :facebook, Facebook::FB_APP_ID, Facebook::FB_APP_SECRET, 
:scope => 'offline_access, email, publish_stream', 
:display => 'touch' 
end 

Respuesta

14

El fragmento #_=_ se añade intencionalmente por Facebook como se describe en Change in Sessions Redirect Behavior. Establecer explícitamente el redirect_uri en su solicitud supuestamente se ocupa de este problema, pero aparentemente hay un error que persiste en el fragmento no deseado incluso cuando se especifica redirect_uri.

Suponiendo que este error no se resuelve, una solución puede ser la sustitución de la ubicación de hash usando Javascript:

window.location.hash = "" 

Esto no pretende sustituir el carácter real de hash, pero va a deshacerse de todo lo que le sigue.

+0

gracias zeantsoi. He estado esperando esto, pero soluciono, pero ahora veo efectos aleatorios. Obtengo el # _ = _ en cromo pero no el safari, aunque antes también lo estaba haciendo en safari. voy con la solución js por ahora. – tomek

+0

@tomek - Parece que la mejor solución vendrá cuando Facebook resuelva el error, que aparentemente está en su lista de tareas pendientes. Si la explicación y la solución de JS son suficientes por ahora, ¿le importaría votar o aceptar la respuesta? – zeantsoi

+1

Esto eliminó todos los caracteres después del '#', pero el usuario aparece con la parte inferior de la página. Cualquier solución? – paniwani

3

Quizás esta sea una respuesta más clara y la que utilicé para resolver este problema.

Puede tener # anclas en sus URL que son deseables y esto es especialmente cierto si puede terminar siendo reenviado a cualquier página en el sitio después del inicio de sesión de Facebook. Así que eliminar todo en # puede causar problemas.

Esta solución solo eliminará la cadena fubar facebook # = de la URL y dejará intactas otras partes del hash.

Agregue este JS a su encabezado o incluya global JS.

(function() { 
    "use strict"; 
    if (window.location && window.location.hash) { 
     if (window.location.hash === '#_=_') { 
      window.location.hash = ''; 
      return; 
     } 
     var facebookFubarLoginHash = RegExp('_\=_', 'g'); 
     window.location.hash = window.location.hash.replace(facebookFubarLoginHash,  ''); 
    } 
}()); 
Cuestiones relacionadas