离子Facebook插件不稳定

时间:2015-01-21 22:39:29

标签: facebook facebook-graph-api ionic-framework ionic

在我的Ionic项目中,我在尝试获取用户的Facebook好友时遇到了一个随机问题。 这是我的控制器中的代码:

$ionicPlatform.ready(function () {
  console.log('SPLASHCTRL: FB: ionic is ready');
  console.log('SPLASHCTRL:FB: starting getLoginStatus()');


  $cordovaFacebook.getLoginStatus()
.then(function(success) {
      //checking if succes
      if(success.status === "connected"){
            console.log("SplashCtrl:FB: User is FB Authenticated; staying at splash");

            $cordovaFacebook.api("me/friends", ["user_friends"])
                .then(
                    function(success) {
                      console.log("SPLASHCTRL: FB: GOT FBAPP FRIENDS SUCCESFULLY: " + JSON.stringify(success));

                       $scope.fbAppFriends = success.data;
                       console.log('SPLASHCTRL: FB: SETTING LOADING TO FALSE');

                       $scope.loadingFbFriends = false;
                    // success
                   }, 
                   function (error) {
                    console.log('SPLASHCTRL: FB: ERROR GETTING FRIENDS' + JSON.stringify(error));

                  }
                );

          } else{
            console.log('SPLASHCTRL: FB: User response is not connected');

            $state.go('intro');
          }

     }, 

    function (error) {
          console.log('SPLASHCTRL: FB: Error getting login status: ' + JSON.stringify(error));

    });


});

跑步时,我得到了日志说

"SplashCtrl:FB: User is FB Authenticated; staying at splash"

表示一切都很好,但在一半的时间后,没有任何事情发生,使得看起来$cordovaFacebook.api没有被调用。 事实证明,每次调用该函数时,我都会出错:

    FB.getLoginStatus() called before FB.init()

所以奇怪的是,这个错误会不时出现,代码不同。

其他遇到类似问题的人?

1 个答案:

答案 0 :(得分:0)

您应该使用ngCordova's Facebook plugin

ngCordova是Ionic的库,可作为离子和标准cordova插件之间的接口。

来自文档:

module.controller('MyCtrl', function($scope, $cordovaFacebook) {

    $cordovaFacebook.login(["public_profile", "email", "user_friends"])
        .then(function(success) {
           // success
        }, function (error) {
           // error
        }
    );

    $cordovaFacebook.getLoginStatus()
        .then(function(success) {
           // success
        }, function (error) {
           // error
        }
    );
});