pagina - messenger facebook iniciar sesion
FB.getLoginStatus() llamado antes de llamar a FB.init() (6)
Tengo este mensaje en mi consola
FB.getLoginStatus() called before calling FB.init().
Mi código
<div id="fb-root"></div>
<script>
// Load the SDK Asynchronously
(function(d){
var js, id = ''facebook-jssdk'', ref = d.getElementsByTagName(''script'')[0];
if (d.getElementById(id)) {return;}
js = d.createElement(''script''); js.id = id; js.async = true;
js.src = /"//connect.facebook.net/fr_FR/all.js#xfbml=1/";
ref.parentNode.insertBefore(js, ref);
}(document));
</script>
<div class="fb-like" data-send="false" data-layout="button_count" data-width="100" data-show-faces="false"></div>
No entiendo por qué. Solo tengo una llamada de este plugin de Facebook en todo mi sitio web.
Respuesta corta
Agregue &status=0
a su URL js.src
para hacer que la advertencia desaparezca, es decir:
//connect.facebook.net/fr_FR/all.js#xfbml=1&status=0
Respuesta completa
FB.init()
será llamado internamente por el script de Facebook al cargarse si se proporcionan los parámetros después del signo de almohadilla (#). Aquí se pasa xfbml
, por FB.init()
se llama a FB.init()
.
(código fuente: http://connect.facebook.net/fr_CA/all/debug.js línea 8699 en el momento de esta publicación)
Los argumentos predeterminados para init () se usan si no se proporcionan explícitamente: el status
arg predeterminado es true
, lo que hace que el script FB llame a getLoginStatus()
al inicio, lo cual se queja porque se necesita una ID de aplicación para esa llamada de función.
Los complementos sociales de FB no necesitan una ID de aplicación : se procesan en un iframe que se origina en facebook.com, por lo que el estado de inicio de sesión de FB y las cookies son accesibles para ellos.
Los asistentes de "Obtener el código" en la sección de complementos sociales de los desarrolladores de FB genera una URL con el param xfbml
, debe actualizarse con el status=0
param en mi humilde opinión.
Advertencia: algunas especulaciones a continuación. Si eso no está bien, puedo eliminarlo.
Supongo que el problema radica en cargar el SDK de forma asíncrona, pero el botón Me gusta en línea. Entonces es posible que el botón Me gusta llame a getLoginStatus antes de que se haya cargado el script. Puede probar / verificar esto comentando el script para cargar el SDK de forma asíncrona y, en su lugar, incluirlo como una etiqueta de script normal en el encabezado de la página.
Por supuesto, esa es la forma más fácil de probar. Si puede verificarlo como el problema, la forma "correcta" de resolverlo probablemente sea asegurarse de que el botón Me gusta no aparezca en la página hasta que se haya cargado el SDK.
Lo tengo trabajando usando este código:
<!--[if IE]>
<script src="https://connect.facebook.net/pt_BR/all.js?xfbml=1" type="text/javascript"></script>
<![endif]-->
<script src="https://connect.facebook.net/pt_BR/all.js#xfbml=1" type="text/javascript"></script>
<div class="fb-like"
data-href="https://www.myurl.com"
data-send="true" data-layout="button_count"
data-width="50" data-show-faces="false"></div>
Respondí una pregunta SO similar here .
En realidad, si tampoco puede ver el botón Me gusta, esta pregunta es un duplicado exacto de la otra.
En mi caso, veo el error de la consola, pero también veo el botón Me gusta.
Si ve la advertencia de ''ID de aplicación no válida'' después de implementar la solución de
https://.com/a/16593474/1428052
luego agregue la aplicación a su URL js.src para que funcione para usted, es decir:
//connect.facebook.net/en_US/all.js#xfbml=1&status=0&appId=YOUR_APP_ID
La presencia de esta aplicación llamará automáticamente a FB.init () con la configuración básica de la aplicación.
FB.init
llamar a la función FB.init
antes de llamar a la función de estado de inicio de sesión de fb
<div id="fb-root"></div>
<script src="//connect.facebook.net/en_US/all.js"></script>
<script>
FB.init({
appId : ''YOUR APP ID'',
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true, // parse XFBML
oauth : true
});
// Load the SDK Asynchronously
(function(d){
var js, id = ''facebook-jssdk'', ref = d.getElementsByTagName(''script'')[0];
if (d.getElementById(id)) {return;}
js = d.createElement(''script''); js.id = id; js.async = true;
js.src = /"//connect.facebook.net/fr_FR/all.js#xfbml=1/";
ref.parentNode.insertBefore(js, ref);
}(document));
</script>