Si usan Facebook Connect en sus sitios y necesitan que la autentificación se mantenga a traves de los subdominios que tengan deben configurar su aplicación Facebook para que el Base Domain sea el dominio principal.
Por jemplo si tenemos el sitio a.pepe.com y b.pepe.com, y queremos que la autentificación con facebook se mantenga entre a y b, el valor de Base Domain debe ser pepe.com. Esto produce los sigueintes efectos:
- Facebook JavaScript Client Library guarda el dominio pepe.com en la cookie de sesión, cosa que permite a todo los subdominios compartir la cookie.
- Los servidores de Facebook pondrán a disposición de todos los subdominios, de pepe.com, la URL definida en "Connect URL" para que pueden intercambiar información de login, de sesion, etc.
Ahora, ¿qué pasa si tienen javascript utilizando document.domain? Simple. de nuevo tenemos a.pepe.com y b.pepe.com, y en ambas tenemos en JavaScript "document.domain = ‘foo.com’;".
Hay que tener cuidado al utilizar "document.domain" en un sitio con Facebook Connect. Esto es porque afecta la manera en que se comunica Facebook JavaScript library con la página de "cross-domain configuration channel" que utiliza Facebook Connect.
Si se usa document.domain para bajar un nivel del dominio en alguna página, hay que tomar una de estas acciones para que Facebook Connect funcione:
- Incluir la misma configuración de document.domain en la página de "cross-domain communication channel". Hay que colocarlo antes del import del javascript de Facebook.
- Especificar otra página de "cross-domain communication channel" ubicada en el dominio inferior (pepe.com en nuestro caso). Por ejemploi se cofnigura el document.domain de http://a.pepe.com como pepe.com, entonces hay que especificar otroa página de "cross-domain communication channel" para http://pepe.com.
Esto está explicado en la wiki de desarrolladores de Facebook que pueden en contrar acá (en inglés).
Espero que les haya servido.
¡Hasta la próxima!
Si te gustó esta nota, podés invitarme una cerveza en agradecimiento. Y algún día quizá pueda yo invitarte una :D
