2015-11-08 32 views
8

我試圖讓Parse.FacebookUtils.logIn在離子視圖上工作,當我在瀏覽器中打開離子服務器時,我已成功地使其工作,但問題是當我嘗試使用Ionic View模擬器登錄時,基本上驗證Facebook窗口不會彈出,我不知道爲什麼。解析Facebook登錄不能在Ionic View中工作

我跟着這個文檔: https://www.parse.com/docs/js/guide#users-facebook-users

一切正常,在瀏覽器中大隻是試圖使其在離子視圖中工作。

任何想法?

+0

查看http://www.raywenderlich.com/44640/integrating-facebook-and-parse-tutorial-part-1 –

+0

此facebook圖標在標誌性視圖問題可能有問題。檢查意見https://github.com/driftyco/ionic-view-issues/issues/45 –

+0

@SomnathMuluk根本沒有幫助 –

回答

4

我放棄瞭解析SDK用液鹼中和使用其他另一個插件使用下面的文檔開始:

http://ngcordova.com/docs/plugins/oauth/

https://github.com/nraboy/ng-cordova-facebook-example/blob/master/www/js/app.js

下面是我做的代碼,使其與工作解析:

$scope.fbLogin = function() { 
      var result; 
      $cordovaOauth.facebook('987971754588010', ['public_profile, user_birthday, email']).then(function(success) { 

       $http.get("https://graph.facebook.com/v2.2/me", { params: { access_token: success.access_token, fields: "id,name,birthday,last_name,first_name,email,gender,picture.type(large)", format: "json" }}).then(function(result) { 

        $localstorage.setObject('fbData', result.data); 

        var expiration_date = new Date(); 
        expiration_date.setSeconds(expiration_date.getSeconds() + success.expires_in); 
        expiration_date = expiration_date.toISOString(); 

        var facebookAuthData = { 
         "id": result.data.id, 
         "access_token": success.access_token, 
         "expiration_date": expiration_date 
        }; 

        Parse.FacebookUtils.logIn(facebookAuthData, { 
         success: function(user) { 
          if (!user.existed()) { 
           alert("User signed up and logged in through Facebook!"); 
           $scope.openModal(); 
          } else { 
           alert("User logged in through Facebook!"); 
           $scope.syncFbData(null); 
          } 
         }, 
         error: function(user, error) { 
          console.log('ERROR: ' + error); 
          var alertPopup = $ionicPopup.alert({ 
           title: 'Error de autenticación de usuario', 
           template: 'El usuario canceló autenticación con Facebook o no autorizó permisos. ' 
          }); 
         } 
        }); 
       }, function(error) { 
        console.log('ERROR: ' + error); 
        var alertPopup = $ionicPopup.alert({ 
         title: 'Error de conexión', 
         template: 'No se ha logrado establecer conexión con Facebook.' 
        }); 
       }); 
      }, function(error) { 
       console.log('ERROR: ' + error); 
       var alertPopup = $ionicPopup.alert({ 
        title: 'Error de conexión', 
        template: 'No se ha logrado establecer conexión con Facebook.' 
       }); 
      }); 
     }; 

     $scope.syncFbData = function (newUsername) { 
      var fbData = $localstorage.getObject('fbData') 
      var currentUser = Parse.User.current(); 
      if (newUsername) { 
       currentUser.set('username', newUsername); 
      } 
      currentUser.set('nombre', fbData.first_name); 
      currentUser.set('apellidos', fbData.last_name); 
      currentUser.set('email',fbData.email); 
      currentUser.set('fechaNacimiento', new Date(fbData.birthday)); 
      currentUser.set('imagenUrl',fbData.picture.data.url); 
      currentUser.set('genero',((fbData.gender === 'male') ? 'Hombre' : 'Mujer')); 
      currentUser.save(null, { 
       success: function (response) { 
        $scope.closeModal(); 
        $state.go('app.lista-cervezas'); 
       }, 
       error: function (response, error) { 
        console.log('ERROR: ' + error); 
        var alertPopup = $ionicPopup.alert({ 
         title: 'Nombre de usuario invalido', 
         template: 'El nombre de usuario ingresado ya se encuentra en uso!' 
        }); 
       } 
      }); 
     }; 
+0

FB SDK和Parse SDK在Ionic視圖,emulater和.apk文件中似乎都不起作用 –