【问题标题】:When to use FirebaseAuth user uid and when to use an E-mail as identifier何时使用 FirebaseAuth 用户 uid 以及何时使用电子邮件作为标识符
【发布时间】:2017-05-21 17:49:12
【问题描述】:

有了这个Question in mined,这是一个后续问题。

请纠正我的假设,我的学习曲线是积极的:)。

如果让我们说一个聊天应用程序将 Firebase 作为后端存储,然后使用聊天系统内的 FirebaseAuth.getInstance().getCurrentUser().getUid() uid 作为聊天成员标识符,如果您允许用户删除那里的帐户并允许帐户链接,这是一个坏主意. uid 会改变,这会破坏数据库,对吗?

我现在的下一个假设是,在聊天应用程序中拥有一个安全的用户 ID,可以使用登录的电子邮件地址,因为它是 trusted provider!? 我的结论是永远不要使用getCurrentUser().getUid() uid 作为用户的标识符,还是?

【问题讨论】:

    标签: android firebase firebase-authentication


    【解决方案1】:

    使用getCurrentUser().getUid() 不是一个坏主意,但更好的主意是使用email address 作为标识符。我这样说是因为在用户删除帐户然后返回的情况下,uid 肯定会有所不同。由于 Firebase 不允许在密钥中使用点符号 .,因此电子邮件地址必须这样编码:

    name@email.com -> name@email,com

    如您所见,我已将. 更改为,。为此,我建议您使用以下方法:

    static String encodeUserEmail(String userEmail) {
        return userEmail.replace(".", ",");
    }
    
    static String decodeUserEmail(String userEmail) {
        return userEmail.replace(",", ".");
    }
    

    希望对你有帮助。

    【讨论】:

    • 谢谢 太好了,也许我走对了,哈哈。用 E-mail 编程是不是有点麻烦,散列它并在任何地方使用散列作为键呢
    • 一点也不,其实很简单。当您将其添加到数据库并对其进行解码时,您只需对用户电子邮件进行一次编码,仅当您想要显示它时。关于散列是没有必要的。你想做的是将它保存在SharedPreferences 并在整个应用程序中使用它。
    • 使用 Facebook 可以创建一个只使用电话号码的帐户。如何处理?
    • 因为 Facebook 不提供用户的电话号码,而且据我所知没有用于此操作的 api,您需要使用 uid。不幸的是,在这种情况下没有其他选择。
    • 谢谢,这是有道理的。感觉在这种情况下uid可以使用,我的意思是它怎么会改变。如果不允许用户删除 Firebase 用户帐户并重新创建它,uid 是唯一标识符,对吗!?
    猜你喜欢
    • 1970-01-01
    • 2017-03-16
    • 2015-09-30
    • 1970-01-01
    • 2012-08-14
    • 2012-02-06
    • 2012-11-15
    • 1970-01-01
    • 2011-09-07
    相关资源
    最近更新 更多