我希望通过NodeJS或Javascript API从Firebase获取Auth User(s)UID。 我已附上截图,以便您知道我在寻找什么。
希望,你们帮我解决这个问题。
答案 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)。
因为原来的问题已经澄清,意图是使用
createCustomToken
和 signInWithCustomToken
,我相信这是一个关于使用 Firebase Admin SDK 或 Firebase 函数(服务器端)提供自定义身份验证,可能基于用户名和密码组合,而不是使用电子邮件地址和密码。
我也认为这里的“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)
})