在我的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()
所以奇怪的是,这个错误会不时出现,代码不同。
其他遇到类似问题的人?
答案 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
}
);
});