在我的AngularJS项目中,我有fb登录,我正在使用angularjs-socil-login插件。当成功登录时,我将存储收到的访问令牌。
问题
fb访问令牌在一段时间后过期。为什么我要使用AngularJs setInterval
更新令牌。然后我编辑了angularjs-socil-login pluging
并添加了reLogin
函数。该函数检查登录状态.if用户已经连接,我正在调用FB.login
函数并更新访问令牌。
当我将$scope.sign
函数设置为按钮点击时,此功能正常。但是当我将$scope.sign
函数设置为AngularJS setInterval
时,它无法正常工作。它不会调用FB.login
function.Chrome控制台仅显示hiiiiii fb
消息
Controller.js
$scope.sign = function(){
$rootScope.newToken="";
socialLoginService.reLogin();
if($rootScope.newToken){
console.log("updated ",$rootScope.newToken);
}
}
setInterval(function(){
$scope.sign();
}, 3000);
将功能(reLogin)添加到angularjs-socil-login pluging中
reLogin:function($q){
console.log("hiiiiii fb");
FB.getLoginStatus(function(response) {
if(response.status === "connected"){
FB.login(function(response) {
if(response.status === "connected"){
$rootScope.newToken=response.authResponse.accessToken;
console.log("updated ",$rootScope.newToken);
}
}, {scope: 'email', auth_type: 'rerequest'});
}else{
}
});
}
答案 0 :(得分:1)
$scope.sign = function(){
$rootScope.newToken="";
socialLoginService.reLogin();
if($rootScope.newToken){
console.log("updated ",$rootScope.newToken);
}
}
$interval(function(){
$scope.sign();
}, 3000);
use $interval instead of setInterval and inject $interval