【问题标题】:Custom Firebase user identity not using the Firebase user uid不使用 Firebase 用户 uid 的自定义 Firebase 用户身份
【发布时间】:2017-06-14 09:37:05
【问题描述】:

我正在使用FirebaseUI-Android,并且有一个关于在唯一标识用户时使用什么 ID 的问题。 FirebaseUI 管理身份验证权限并返回IdpResponse 对象。这可以是例如Facebook、Twitter、电话等。非常感谢背后的每一个人。

因为FirebaseUser.getUid() 可以在用户删除/重新创建他的帐户时更改,因此我不想将我的用户数据与FirebaseUser.getUid() 令牌相关联。

将来,如果我决定让用户擦除那里的帐户,则当用户返回时,uid 将发生变化,并且我系统中该用户的所有用户历史记录都无法再访问了。同样,将来如果我将系统迁移到某个地方,uid 就不会那么方便了,对吧?

现在我创建了这个包装器(下面的代码)来创建一个从 IdpResponse 中的数据推断出来的唯一 ID。真的不知道,但我认为这样做永远不会发生“id”冲突,除非有 Google2.0 例如Twitter2.0 :) 对。同时更容易揭穿系统中的错误,因为 id 不是 UUID。

这是处理用户 ID 问题的推荐方法吗?我真的需要一些关于此的反馈和陷阱警告。

@Override
public String getUserId() {
    String userId;
    FirebaseUser user = getInstance().getCurrentUser();
    if (user.getEmail() != null)
        // User sign in with E-Mail
        userId = user.getEmail().replace(".", ",");
    else if (user.getPhoneNumber() != null){
        // User sign in with Phone
        userId = user.getPhoneNumber();
    }else
        // User sign in with Twitter or Facebook 
        userId = user.getUid();
    return userId;
}

最困扰我的是 Twitter 或 Facebook,因为我仍然必须使用 FirebaseUser.getUid()IdpResponse.getIdpToken() 对我们来说更好吗?

【问题讨论】:

    标签: android firebase firebase-authentication


    【解决方案1】:

    正如您在帖子中提到的,使用 uid 并不是最佳选择。如果用户删除了他的帐户,然后尝试创建另一个帐户,则会生成另一个 uid。因此,在这种情况下,他丢失了所有数据历史记录。 识别用户的最佳方式是使用email address。电子邮件地址是唯一的,易于使用,如果将来需要,将Google accountFacebook accountTwitter account 链接,基于电子邮件地址,您将能够执行 id。由于 Firebase 不接受密钥中的 . 符号,我建议您将电子邮件地址编码如下:

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

    如您所见,我已将点符号 . 更改为逗号 ,。为了实现这一点,我建议您使用以下方法:

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

    希望对你有帮助。

    【讨论】:

    • 谢谢,我也是这么想的。
    • 所以,如果您认为我的回答对您有所帮助,请考虑接受并给予 +1。谢谢!
    猜你喜欢
    • 2018-04-08
    • 2021-03-27
    • 2020-10-10
    • 1970-01-01
    • 1970-01-01
    • 2021-07-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多