Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Authentication 如何在firebaseAuth成功时启动地理定位_Authentication_Geolocation_Angularfire - Fatal编程技术网

Authentication 如何在firebaseAuth成功时启动地理定位

Authentication 如何在firebaseAuth成功时启动地理定位,authentication,geolocation,angularfire,Authentication,Geolocation,Angularfire,我使用$firebaseAuth来控制我的应用程序的登录部分,我想在用户进行身份验证时启动一个地理位置 当我使用下面的代码时,在身份验证之前开始地理定位: .run(function($ionicPlatform, $rootScope, $location, Auth, $ionicLoading, $cordovaGeolocation, geoLocation, defautLocation) { $ionicPlatform.ready(function() {

我使用$firebaseAuth来控制我的应用程序的登录部分,我想在用户进行身份验证时启动一个地理位置

当我使用下面的代码时,在身份验证之前开始地理定位:

 .run(function($ionicPlatform, $rootScope, $location, Auth, $ionicLoading, $cordovaGeolocation, geoLocation, defautLocation) {
   $ionicPlatform.ready(function() {

       if (window.cordova && window.cordova.plugins && window.cordova.plugins.Keyboard) {
             cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
        }
     if (window.StatusBar) {
       // org.apache.cordova.statusbar required
      StatusBar.styleLightContent();
     }

     $rootScope.firebaseUrl = firebaseUrl;
     $rootScope.displayName = null;

     Auth.$onAuth(function (authData) { 
        if (authData) {
            console.log("Logged in as:", authData.uid);
        } else {
            console.log("Logged out");
            $ionicLoading.hide();
            $location.path('/login');
        }
    })

    $cordovaGeolocation
      .getCurrentPosition()
      .then(function (position) {
         ...
      }, function(err) {
         ...
             });
     $cordovaGeolocation.watchPosition({
         frequency: 1000,
         timeout: 3000,
         enableHighAccuracy: false
    }).then(function () {
    }, function (err) {
       ...
    });

    $rootScope.logout = function () {
        console.log("Logging out from the app");
        $ionicLoading.show({
            template: 'Logging Out...'
        });
        Auth.$unauth();
}

...
我尝试包装$cordovaGeolocation:

 Auth.$requireAuth().then(function(authData) {
  if (authData) {
    $cordovaGeolocation
      .getCurrentPosition()
      .then(function (position) {
         ...
      }, function(err){
         ...
     });
     $cordovaGeolocation.watchPosition({
         frequency: 1000,
         timeout: 3000,
         enableHighAccuracy: false
    }).then(function () {
    }, function (err) {
       ...
    });
  }else{
     ...
  }
  });
但当用户登录时,它不会启动地理定位,我需要重新加载

watchPosition意味着我的功能必须在身份验证期间始终处于活动状态

因此,我的问题是,如何在认证成功之后直到未经认证之前执行我的地理定位功能

我对棱角和火箭筒都是新手,一点也不奇怪


Thx很多,

您可能需要在Auth.$onAuth中使用它,即您已经拥有console.loglogging的地方,authData.uid;你说得对。。我真丢脸。。我现在的问题是在未经授权的情况下停止监视Position,我尝试在注销功能中使用clearWatch,但仍在监视。。谢谢!该代码将进入$onAuth函数的else分支。是的,但当我第一次身份验证,然后取消身份验证时,watchPosition停止,我到达存储用户名和密码的登录页面,我再次身份验证,watchPosition再次点火,然后我再次取消身份验证,watchPosition不停止,而我正在取消身份验证。。它只工作一次而不是两次,我必须在第一次未经授权后刷新我的页面。谢谢你的帮助,我最后的评论可能涉及其他问题,所以我提出了一个新问题。