如何将单击事件函数设置为AngularJS setInterval

时间:2017-08-04 04:59:10

标签: angularjs facebook facebook-social-plugins

在我的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{

                }
            });
        }

1 个答案:

答案 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