如何在Firebase的authStateObserver中调用.isNewUser()

时间:2019-03-09 11:14:35

标签: javascript firebase firebase-authentication

在文档中根本不清楚如何检查新登录的用户之前是否已登录我的Web应用程序。这里引用了一个isNewUser()调用:

AdditionalUserInfo

目前尚不清楚的是,在使用Firebase身份验证调用和观察者时如何访问此调用。

firebase.auth().onAuthStateChanged(authStateObserver);

人使用指定的提供程序登录后,authStateObserver将获得一个用户对象。无法使用此用户对象来调用.isNewUser(),因此如何从此authStateObserver内部获取到具有.isNewUser()调用的AdditionalUserInfo?这是在网络应用程序中的javascript中。

2 个答案:

答案 0 :(得分:0)

firebase.auth().onAuthStateChanged仅用FirebaseUser触发。您无法获得additionalUserInfo或任何credential例如。与该观察者的结果相关联的OAuth令牌。登录承诺解决后,您必须从firebase.auth.UserCredential获取它。

由于这些结果仅在登录时可用一次,并且Auth不会刷新OAuth凭据或主动更新基础OAuth配置文件,因此Firebase Auth选择不在onAuthStateChanged侦听器中提供它们,因为这可能会误导开发人员以为实际上,此信息仅在登录时可用一次,因此该侦听器可用于侦听/获取新凭据或其他用户数据。

观察者将仅观察到更改为FirebaseUser的情况。登录或退出事件。

答案 1 :(得分:0)

对于isNewUser(),进入FirebaseUser类,单击子类,它将带您进入zzn类(适用于Android及更高版本)。搜索“ isNewUser”,您将找到一个用该字符串标记的字段。是zzj:

@Field(
        id = 10,
        getter = "isNewUser"
    )
    private boolean zzj;

现在搜索该字段的getter,在我的情况下是:

public final boolean zzj() {
    return this.zzj;
}

因此在您的代码库中,这是条件:((zzn) firebaseUser).zzj()

所有您需要做的就是遵循Zzzzz字母。 Smh(痛苦的命名)。