首页 文章

如何检查用户是否只是谷歌首次登录firebase

提问于
浏览
1

我有一个已经使用Firebase登录电子邮件和密码的应用程序 . 为了方便用户,我添加了Google登录并实施了它 .
问题是,当我使用电子邮件登录时,应用程序会根据用户的uid在密钥下创建一些数据 . 该数据通常在首次登录/注册时创建 . 但是,当用户使用Google登录功能时,他们会通过Google Play服务托管的其他活动进行身份验证 .
所以,问题是我应该怎么做才能检查用户之前是否使用Google帐户登录 . 因此,如果用户第一次进行谷歌登录,它将在实时数据库中创建新数据,否则它将检索数据 . 我很震惊,请帮助我 .

3 回答

  • 0

    好极了!如果数据已存在于数据库中,我找到了一种有效的方法 . 它按照我的意图工作,如果我从谷歌/电子邮件创建新用户,我将其名称保存在我的数据库中,但从同一帐户登录,之前是在同一个地方引入太新的数据重写名称 - 大量使用数据带宽 . 我解决了这个问题 .

    final User newUser = new User();
        newUser.email = user.getEmail();
        newUser.name = user.getDisplayName();
    DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
        rootRef.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                if (dataSnapshot.hasChild("user/" + user.getUid())) {
                    //User Exists , No Need To add new data.
                    //Get previous data from firebase. It will take previous data as soon as possible..
                    return;
                } else {
                    FirebaseDatabase.getInstance().getReference().child("user/" + user.getUid()).setValue(newUser);
                }
            }
    
            @Override
            public void onCancelled(DatabaseError databaseError) {
    
            }
        });
    

    告诉你的一点,User是我创建的一个Custom类,用于将数据放在firebase数据库中 . 很抱歉回复这个问题,我在2个月前找到了这个解决方案 . 我发现这个问题的重要性,因为今天有1000个观点 . 如果这也适合你,请回复我 .

  • 0

    您需要保存共享首选项并检查用户是否首次登录 .

    这个link可能会帮到你 . 但在查看代码之前,请阅读FIREBASE的文档 .

  • 1

    在第一次登录时在数据库中添加某种标志并使其成立 . 每当用户登录时,检查该标志是否存在且是否为真,然后检索旧数据,否则添加新数据(或任何您想要的数据) .

    firstlogin: true

    这是与facebook登录的javascript代码,你可能有一个想法 .

    var provider = new firebase.auth.FacebookAuthProvider();
      function facebookSignin() {
        firebase.auth().signInWithPopup(provider)
         .then(function(result) {
            var user = result.user;
            firebase.database().ref('/users/'+user.uid).on('value', 
              function(snapshot){
                 if (!snapshot.exists()) {
                     //user does not exist, add new data
                 }else{
                     //user exist, retrieve old data
                }
           }); //firebase.database().ref ends
         });//then() ends
       }//function ends
    

相关问题