有没有办法让Firebase Auth用户使用UID?

时间:2016-07-13 13:12:45

标签: javascript node.js api firebase firebase-authentication

我希望通过NodeJS或Javascript API从Firebase获取Auth User(s)UID。 我已附上截图,以便您知道我在寻找什么。

enter image description here

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

6 个答案:

答案 0 :(得分:18)

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

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获取当前用户。

http://docs.aws.amazon.com/cli/latest/reference/cloudformation/wait/stack-create-complete.html

答案 1 :(得分:15)

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

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

答案 2 :(得分:2)

这是一个老问题,但我相信接受的答案为不同问题提供了正确答案;虽然 answer from Dipanjan Panja 似乎回答了最初的问题,但最初的发帖人后来在回复中澄清了一个不同的问题:

<块引用>

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

因为原来的问题已经澄清,意图是使用 createCustomTokensignInWithCustomToken,我相信这是一个关于使用 Firebase Admin SDKFirebase 函数(服务器端)提供自定义身份验证,可能基于用户名和密码组合,而不是使用电子邮件地址和密码。

我也认为这里的“uid”有些混淆,在下面的代码示例中,它不是指用户的 Firebase uid,而是文档中指示的 uid admin .auth() .createCustomToken(uid) .then((customToken) => { ... {3}},显示:

uid

在这种情况下,createCustomToken 调用中的 uid 参数不是 Firebase uid 字段(尚不知道),因此提供了一系列令人沮丧的回复编码员问这个问题。

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

如果您查看上面文档页面中的短代码块,您会看到在这种情况下 const uid = 'some-uid'; 被定义为:

'admin'

同样,这可以代表自定义身份验证想要的任何内容,但在这种情况下,让我们假设 用户名/用户 ID 与密码配对。因此它的值可能是 'appurist''123456'uid 或其他值。

答案:所以在这种情况下,这个特定的 signInWithUsernameAndPassword(错误命名)可能来自用户输入,在登录表单上,这就是为什么它在(之前)登录时可用。如果您知道谁在尝试登录,那么一些 Admin SDK 代码代码会在所有用户中搜索匹配字段(存储在新用户注册时)。

这一切似乎都是为了避开 Firebase支持 signInWithUidAndPassword(任意用户 ID/用户名)甚至 {{1}}(Firebase UID)的事实.因此,我们需要 Admin SDK 解决方法或 Firebase 函数,而 Firebase 的无服务器方面被严重削弱。

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

答案 3 :(得分:1)

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

var ref = new Firebase("https://<YOUR-FIREBASE-APP>.firebaseio.com");
var authData = ref.getAuth();

if (authData) {
  console.log("Authenticated user with uid:", authData.uid);
}

来源:

答案 4 :(得分:1)

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

{{1}}

然后,您可以在需要uid时进行查询并检索它。
希望这个简单的解决方案可以帮到你!

答案 5 :(得分:0)

在服务器端,您可以使用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)
})