在firebase中,您可以使用FirebaseAuth.getInstance().getCurrentUser()...
访问当前用户的数据,我想知道是否可以通过其ID或电子邮件访问其他经过身份验证的用户的公开数据。
答案 0 :(得分:2)
访问用户数据是一项危险的操作,想象一下一个允许您更改其他人用户名的应用程序。
因此,除非您将用户数据复制到RTD或Firestore并使用规则集隐私控制,否则您不能在客户端中
。我认为您正在寻找的是类似auth的admin sdk之类的东西,它允许使用电子邮件或uid搜索用户。
您可以在此处查看文档
https://firebase.google.com/docs/auth/admin/manage-users
如果您不想设置服务器,则可以按照Firebase的方式进行;使用功能。功能是类似于服务器的受信任环境,因此它可以使用admin sdk进行身份验证。您可以创建一个onCall函数来执行任何所需的操作。
如果只想搜索用户,请考虑在任何数据库上都有用户数据的可搜索版本,如果要查找功能的管理员类型,则需要功能onCall。
您可能想使用海关声明设置管理员权限
https://firebase.google.com/docs/auth/admin/manage-users
exports.userCreationListener = functions.auth.user().onCreate(user => {
const admins = {
"first@admin.com": true
};
const email = user.email;
if (!admins[email]) {
return false;
}
const uid = user.uid;
return admin.auth().setCustomUserClaims(uid, {superAdmin: true}).then(
()=>admin.database().ref(`users/${uid}`).set(true)).catch(error=>{
console.log("SUPER_ADMIN_UPDATE_ERROR", error);
return false;
});
});
答案 1 :(得分:-1)
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
if (user != null) {
// The user's ID, unique to the Firebase project. Do NOT use this value to
// authenticate with your backend server, if you have one. Use
// FirebaseUser.getIdToken() instead.
String uid = user.getUid();
}
阅读指南https://firebase.google.com/docs/database/admin/retrieve-data