【问题标题】:firebase current user idfirebase 当前用户 ID
【发布时间】:2016-12-11 10:39:11
【问题描述】:

从我的工厂/服务中检索当前用户 ID 时出错。删除此 firebase.auth().currentUser.uid 似乎可行。
我错过了什么吗?
是否可以从工厂获取用户 ID?

.factory("dataFire", ["$firebaseArray", "$firebaseAuth", "$firebaseObject", function($firebaseArray, $firebaseAuth, $firebaseObject){
var ref = firebase.database().ref("users/" + firebase.auth().currentUser.uid);
var user = $firebaseObject(ref);
return {
    user: user

} }])

jsfiddle 链接 https://jsfiddle.net/ken19net/m8qkdrpu/37/

【问题讨论】:

  • 仅从这段代码 sn-p 是不可能看出哪里出了问题的。有什么方法可以在 minimal jsfiddle/jsbin 中重现问题并从您的问题中链接?
  • 您好,坦率地感谢您的回复。用 jsfiddle 链接更新了我的帖子。我打算将我所有的数据库引用都放到我的服务中。

标签: angularjs firebase firebase-realtime-database angularfire firebase-authentication


【解决方案1】:

将侦听器附加到数据库的代码在用户登录之前运行。由于此时没有当前用户firebase.auth().currentUser.uid 将引发以下错误:

VM603 angular.min.js:118 TypeError: Cannot read property 'uid' of null

在以后的问题中,请包含错误消息,因为它可以为我们节省一些时间。

解决方案是在用户通过身份验证后附加监听器:

app.controller("appCtrl", function($scope, $firebaseAuth, myService) {

  $scope.signIn = function() {
    $firebaseAuth().$signInAnonymously().then(function(user) {
      var ref = firebase.database().ref("test/" + firebase.auth().currentUser.uid);
    });
  };

});

请注意,每次用户加载页面时,运行上述代码都会创建一个新的匿名用户帐户。如果这不是您想要的,请使用身份验证状态侦听器:

firebase.auth().onAuthStateChanged(function(user) {
  if (user) {
    var ref = firebase.database().ref("test/" + firebase.auth().currentUser.uid);
  }
});

请参阅documentation on getting the currently signed in user

【讨论】:

    【解决方案2】:

    我可能有类似的问题。这可能会有所帮助。

    if (firebase.auth().currentUser !== null) {
            console.log("user id: " + firebase.auth().currentUser.uid);
    
            var ref = firebase.database().ref().child("users/" + firebase.auth().currentUser.uid);
    
            var syncUserObject = $firebaseObject(ref);
            syncUserObject.$bindTo($scope, "data");
    
        } else {
            console.log("No user currently logged in");
        }
    

    如果所有其他方法都失败了,那么只需 JSON.stringify(Object ,null, 2);

    【讨论】:

      猜你喜欢
      • 2018-01-28
      • 1970-01-01
      • 2019-05-28
      • 2018-01-18
      • 1970-01-01
      • 1970-01-01
      • 2016-09-27
      • 2017-12-24
      相关资源
      最近更新 更多