如何通过其ID获取Firebase用户?

时间:2019-05-02 17:17:04

标签: android firebase firebase-authentication

在firebase中,您可以使用FirebaseAuth.getInstance().getCurrentUser()...访问当前用户的数据,我想知道是否可以通过其ID或电子邮件访问其他经过身份验证的用户的公开数据。

2 个答案:

答案 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