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:

login.html

<div id="fb-root"></div>
<div class="event listening button" ng-click="login();">Login with Facebook</div>

app.js

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'
    });

controlers.js

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 :)

¿Fue útil?

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!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top