1

firebaseが大幅に更新されて以来、基本的な質問に対する答えを見つけることはほとんど不可能でした。彼らのドキュメントを使ってさえ。IonicとFirebaseの自動ログイン

私の質問は、ユーザーが自分のアプリに一度サインインして、無期限に、または一定時間ログインしたままにすることです。

ユーザーがログインすると、データにアクセスするにはどうすればよいですか?名字のように?データベースを作成して、何らかの形でユーザーIDにリンクする必要がありますか?

firebase.auth()。signInWithEmailAndPassword(email、password)はfirebase URLを提供していないため、どのように動作するか分かりません。それは、インデックスページ上の設定objからそれを引っ張っているのですか?ここで

は私の角度コードです:ログインに滞在永遠

appControllers.controller('userCtrl', ['$scope', '$rootScope', '$ionicPlatform', '$cordovaDevice', '$mdToast', '$mdBottomSheet', '$timeout', '$stateParams', '$state', 'LogIn', 'SignUp', '$http', '$firebaseAuth', 
 
    function($scope, $rootScope, $ionicPlatform, $cordovaDevice, $mdToast, $mdBottomSheet, $timeout, $stateParams, $state, LogIn, SignUp, $http, $firebaseAuth) { 
 
    var devid; 
 
    $scope.id = "1"; 
 
    $scope.errorMsg = ""; 
 

 
    // timeout to get device ID 
 
    $timeout(function() { 
 
     document.addEventListener("deviceready", onDeviceReady, false); 
 

 
     function onDeviceReady() { 
 
     console.log(device.cordova); 
 
     $scope.id = $cordovaDevice.getUUID(); 
 
     return $scope.id; 
 
     } 
 

 

 
    }, 1000); 
 

 
    // watches change in DEVID 
 
    $scope.updateID = function() { 
 
     devid = $scope.id; 
 
     console.log(devid); 
 
     return devid; 
 
    }; 
 

 
    $scope.initialForm = function() { 
 
     $scope.moveBox = function() { 
 
      // $("#signupbox").fadeOut(); 
 
      $('#signupbox').animate({ 
 
      'marginTop': "+=170px" //moves down 
 
      }); 
 

 
      $timeout(function() { 
 
      $state.go('app.signup'); 
 
      }, 500); 
 

 
      $timeout(function() { 
 
      $('#signupbox').animate({ 
 
       'marginTop': "-=170px" //moves down 
 
      }); 
 
      }, 1000); 
 
     } // end animate 
 

 
     // Toast for empty Fields 
 
     $scope.showAlert = function(menuName, time) { 
 
      //Calling $mdToast.show to show toast. 
 
      $mdToast.show({ 
 
      controller: 'toastController', 
 
      templateUrl: 'toast.html', 
 
      hideDelay: time, 
 
      position: 'top', 
 
      locals: { 
 
       displayOption: { 
 
       title: menuName 
 
       } 
 
      } 
 
      }); 
 
     } // End showToast. 
 

 
     // check LogIn 
 
     var em, pw; 
 
     $scope.user = {}; 
 
     $scope.updateEmail = function() { 
 
     em = $scope.user.email; 
 
     console.log(em); 
 
     return em; 
 
     }; 
 
     $scope.updatePass = function() { 
 
     pw = $scope.user.pass; 
 
     console.log(pw); 
 
     return pw; 
 
     }; 
 

 
     // Password Validation 
 
     $scope.validatePass = function(ppw) { 
 
     if (ppw.length < 8) { 
 
      $scope.errorMsg = "Password must be at least 8 characters long"; 
 
     } 
 
     }; 
 

 
     // start login 
 
     $scope.logInNow = function() { 
 
     var sdata = { 
 
      em: em, 
 
      pw: pw 
 
     }; 
 

 
     if (pw == "" || pw == null) { 
 
      $scope.errorSignIn = "Fields cannot be blank"; 
 
     } 
 
     // FIREBASE LOGIN 
 
     else { 
 
      firebase.auth().signInWithEmailAndPassword(sdata.em, sdata.pw) 
 
      .then(function(authData) { 
 
       console.log("Logged in as:", authData.uid); 
 
       $state.go('app.types'); 
 
      }).catch(function(error) { 
 
       console.error("Authentication failed:", error); 
 
       $scope.errorSignIn = "Email or Password is invalid"; 
 
      }); 
 
     } 
 
     } 
 

 

 

 
    }; 
 

 
    $scope.initialForm(); 
 

 

 

 

 
    } 
 
]);

答えて

1
  1. デフォルトの動作ですが、それはすべてのクッキーについてですので、イオンはクッキーをクリアした場合、ユーザーが得ますログアウト。私はイオニックにはないので、あなたはそれがイオニックで何かであるかどうかを理解する必要があると思います。 Related Ionic blog post.ユーザをある時点でログアウトさせたい場合は、タイマーを設定し、X時間経過後にユーザをログアウトするだけで、これを行うことができます。これはクライアント側の操作であることに注意してください。たびに、ユーザーが状態は、私は常に正しい情報(Firebase User Interface)が変化しているアプリを入力しているので、

    firebase.auth().onAuthStateChanged(function(user) { 
    if (user) { 
        $scope.photoURL = user.photoURL; 
        $scope.name = user.displayName; 
        $scope.logged_in = true; 
    } else { 
        $scope.photoURL = ""; 
        $scope.name = ""; 
        $scope.logged_in = false; 
    } 
    }); 
    

それは動作します:私のWebアプリで

  • は、私はこのような何かをしました。それを作る別の方法があることを覚えていますが、いくつかの問題がありました。

    1. Firebaseが最初に設定され、初期化され、アプリケーションでのすべての呼び出しがプロジェクトに設定されます。そう、それは設定から​​引っ張っている。

    ところで、 https://firebase.google.com/docs/のような新しい文書を使用していますか?私は彼らが実際にかなりいいから頼んでいる。

    +0

    フィードバックいただきありがとうございます。私はあなたの推薦を試みます。 新しい文書と古い文書の両方を調べましたが、たぶん私はばかだから接続できません。しかし、ドキュメントのいくつかは少し弱く、不明瞭に見えました。 –

    +0

    また、あなたはそのコードをどこに置いたのですか? ctrlまたは.runで? –

    +0

    さて、私はそれをインターネットアプリケーションではなく、Ionicアプリでやってみました。それを見てください:https://czatowanko-5bf39.firebaseapp.com – pr0gramist

    関連する問題