PhoneGap-Facebook-Plugin en WebApp, Error JS
-
26-12-2019 - |
Pregunta
Estoy construyendo una aplicación móvil basada en iónica y estoy usando la phonegap-facebook-plugin para iniciar sesión con Facebook. He logrado instalar el complemento en Android y IOS y funciona. Sin embargo, al intentar usarlo para la webapp, estoy teniendo dificultades que lo hacen funcionar. Describiré mi configuración y luego resumiré el error:
<div id="fb-root"></div>
<div class="event listening button" ng-click="login();">Login with Facebook</div>
angular.module('app', ['ionic', 'app.controllers', 'app.services'])
.config(function($stateProvider, $urlRouterProvider) {
$stateProvider
//First page
.state('login', {
url: '/login',
templateUrl: 'templates/login.html',
controller: 'LoginCtrl'
});
angular.module('app.controllers', [])
.controller('LoginCtrl', function($scope){
$scope.login = function () {
if (!window.cordova) {
var appId = prompt("Enter FB Application ID", "");
facebookConnectPlugin.browserInit(appId);
}
facebookConnectPlugin.login( ["email"],
function (res) {
//if successfull
if (JSON.stringify(response['authResponse']['accessToken']) != null){
alert("True");
$location.path('/home').replace();
}
else{
//redirect back
}
},
function (res) {
//if error
alert(JSON.stringify(response))
}
);
}
});
En la facebookconnectplugin.js , tengo una línea de código que obtiene el error " sin captura TypeError: no se puede leer la propiedad 'Apendchild' de NULL ", específicamente line 174 :
document.getElementById('fb-root').appendChild(e);
Sé que esto debe ser debido a la DOM, pero parece que no puede superarlo.
Cualquier ayuda sería genial, gracias :)
Solución
en index.html, intente colocar todas las etiquetas de script al final (justo antes de la etiqueta del cuerpo de cierre).Esto deberia resolver el problema.
Otros consejos
Tal vez esta respuesta es demasiado tarde, pero para aquellos que tienen el mismo problema. Estoy enfrentando este problema en el marco iónico, agregando lo siguiente a la plataforma (iOS, Android, navegador) que, que tiene el problema, se solucionó el problema para mí.
<script>
window.fbAsyncInit = function() {
FB.init({
appId : 'your_app_id',
xfbml : true,
version : 'v2.8'
});
FB.AppEvents.logPageView();
};
(function(d, s, id){
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {return;}
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_US/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
espero que esto ayude!