Javascript 有没有办法获取Firebase身份验证用户UID?

Javascript 有没有办法获取Firebase身份验证用户UID?,javascript,node.js,api,firebase,firebase-authentication,Javascript,Node.js,Api,Firebase,Firebase Authentication,我希望通过NodeJS或Javascript API从Firebase获取身份验证用户UID。 我附上了它的截图,这样你就会知道我在寻找什么 希望你们能帮我解决这个问题。从Firebase文档中,使用Firebase.getAuth(): var ref=新Firebase(“https://.firebaseio.com"); var authData=ref.getAuth(); if(authData){ log(“身份验证用户,uid:”,authData.uid); } 资料来源:

我希望通过NodeJS或Javascript API从Firebase获取身份验证用户UID。 我附上了它的截图,这样你就会知道我在寻找什么


希望你们能帮我解决这个问题。

从Firebase文档中,使用
Firebase.getAuth()

var ref=新Firebase(“https://.firebaseio.com");
var authData=ref.getAuth();
if(authData){
log(“身份验证用户,uid:”,authData.uid);
}
资料来源:


验证数据在Firebase 3中是异步的。因此,您需要等待事件,然后才能访问当前登录用户的UID。你将无法得到其他人。当应用程序打开时,它也会被调用

如果愿意,您也可以只在收到事件后渲染应用程序一次,以避免在那里使用额外的逻辑来确定事件是否已触发

您还可以根据
用户的存在从这里触发路由更改,这与加载路由前的检查相结合,是确保只有正确的人才能查看publicOnly或privateOnly页面的可靠方法

firebase.auth().onAuthStateChanged((user) => {
  if (user) {
    // User logged in already or has just logged in.
    console.log(user.uid);
  } else {
    // User not logged in or has just logged out.
  }
});
在应用程序中,您可以保存此用户对象,也可以随时使用
firebase.auth().currentUser
获取当前用户


目前在Firebase控制台中,没有直接的API来获取用户列表,即身份验证用户UID。
但是在Firebase数据库中,您可以在用户级别维护用户UID。如下:

"users": {
  "user-1": {
    "uid": "abcd..",
    ....
  },
  "user-2": {
    "uid": "abcd..",
    ....
  },
  "user-3": {
    "uid": "abcd..",
    ....
  }
}
然后,您可以在需要uid时进行查询并检索它。

希望这个简单的解决方案能对您有所帮助

如果用户已登录,则console.log将打印:

if (firebase.auth().currentUser !== null) 
        console.log("user id: " + firebase.auth().currentUser.uid);

在服务器端,您可以使用firebase admin sdk获取所有用户信息:

const admin = require('firebase-admin')
var serviceAccount = require("./serviceAccountKey.json");

admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  databaseURL: "https://yourprojecturl.firebaseio.com",
});

admin.auth().listUsers().then(data=>{
    console.log(data.users)
})

这是一个古老的问题,但我相信被接受的答案为另一个问题提供了正确的答案;虽然这张海报似乎回答了最初的问题,但最初的海报后来在回答时用了一个不同的问题:


基本上,我需要通过Firebase.auth().createCustomToken(UID)从UID生成令牌,以使用以下函数Firebase.auth().signInWithCustomToken(令牌)在Firebase上登录用户

因为原来的问题被澄清了,目的是使用
createCustomToken
signInWithCustomToken
,我认为这是一个关于使用Firebase管理SDKFirebase函数(服务器端)提供自定义身份验证的问题,可能基于用户名和密码组合,而不是使用电子邮件地址和密码

我还认为这里对“uid”有一些混淆,在下面的代码示例中,它不是指用户的Firebase
uid
,而是指文档中所示的
uid
,它显示:

admin
  .auth()
  .createCustomToken(uid)
  .then((customToken) => {
    ...
在这种情况下,
createCustomToken
调用上的
uid
参数不是Firebase
uid
字段(该字段还未知),因此为询问此问题的编码器提供了一系列令人沮丧的回答

相反,此处的
uid
指的是此自定义身份验证将支持的任何任意登录基础。(例如,它也可以是电子邮件地址、社会保险号码、员工号码、任何内容……)

如果您在文档页面的短代码块上方查看,您将看到在本例中,
uid
被定义为:

const uid = 'some-uid';
同样,这可以表示自定义身份验证想要的任何内容,但在本例中,让我们假设它的用户名/用户ID与密码配对。因此,它的值可能是
'admin'
'appurist'
'123456'
或其他值

回答:因此,在本例中,这个特定的
uid
(命名错误)可能来自登录表单上的用户输入,这就是为什么它在(登录之前)可用的原因。如果您知道谁正在尝试登录,请输入一些管理SDK代码,然后在所有用户中搜索匹配字段(存储在新用户注册中)

似乎所有这些都是为了回避这样一个事实,即Firebase不支持使用用户名和密码的
登录(任意用户名/用户名),甚至不支持使用用户名和密码的
登录(Firebase UID)。因此,我们需要Admin SDK解决方案或Firebase函数,而Firebase的无服务器功能被严重削弱

关于自定义身份验证令牌主题的6分钟视频,我强烈推荐Jen Person的Firebase YouTube视频:

基于您要检索的内容?认证用户?用户电子邮件?请提供更多详细信息..任何用户的UID,还是经过身份验证的用户?基本上,我需要通过
Firebase.auth().createCustomToken(UID)
从UID生成令牌,以使用以下函数在Firebase上登录用户
Firebase.auth().signInWithCustomToken(令牌)
。您是想在服务器上还是客户端上获取uid?基本上,我需要通过
Firebase.auth().createCustomToken(uid)
从uid生成令牌,以使用以下函数在Firebase上登录用户
Firebase.auth().signInWithCustomToken(令牌)
。在firebase上登录用户还有其他方法吗?firebase使身份验证变得简单。它具有内置的电子邮件和密码功能,以及Facebook、Twitter、GitHub和Google等第三方提供商。使用Firebase
自定义身份验证API
,您也可以与现有的登录服务器集成。有关这些文章的更多信息,希望本文能对您有所帮助,如果我尝试使用,
authdata.uid
属于哪个用户?问题是我需要UID在firebase上登录用户,而没有身份验证,我如何才能获得正确的UID。我相信这属于当前已验证的用户,这可以通过DB轻松确认。但我需要UID登录用户。我不确定你的意思,这
const uid = 'some-uid';