仅在用户首次登录时才将用户重定向到该页面

时间:2018-06-02 17:07:44

标签: angular firebase firebase-authentication angularfire2

我试图通过firebase找到一种方法来识别用户是否第一次登录(不能完全依赖注册来确定这一点)。基本上,在任何类型的登录(电子邮件,电话,脸书,谷歌等),我想检查这是否是我们第一次将此用户添加到firebase。

3 个答案:

答案 0 :(得分:1)

您可以在用户对象中添加一个简单的布尔值:

class/interface User {
    username: string;
    password: string;
    // other properties...
    firstTimeSignedIn: boolean;
}

如果firstTimeSignedIn为true,您可以重定向并将其设置为false

答案 1 :(得分:1)

建立米歇尔的答案......

我可能会在那里投入您可以使用Firebase函数创建文档,并在创建帐户时将其添加到profiles(使用Firestore或RTDB)的集合中。

import * as functions from 'firebase-functions';
import * as admin from 'firebase-admin';

export const userOnCreate: functions.CloudFunction<admin.auth.UserInfo> = functions.auth.user()
  .onCreate((event: functions.Event<admin.auth.UserRecord>) => {
    const user: admin.auth.UserRecord = event.data;

    return admin.firestore().collection('profiles').doc(user.uid).set({
      email: user.email, // or username
      firstTimeSignedIn: false
    });
  });

添加firstTimeSignedIn的布尔值,然后登录查询文档。如果它不存在(因为该功能没有足够快地触发),你知道这是第一次。如果价值是假的,那么你第一次知道它。但是,在重定向之后,您可以set使用合并... {/ p>

firestore.collection('profiles').doc(uid).set({firstTimeSignedIn: true}, { merge: true });

答案 2 :(得分:0)

如果您想在登录/注销时确定用户是新用户还是现有用户,则只需检查所有登录方法中返回的userCredential中的userCredential.additionalUserInfo.isNewUser