如何使用firebase在Web应用程序中使用Google身份验证获取用户详细信息?

时间:2017-08-27 05:44:44

标签: javascript firebase firebase-authentication

我有一个网络应用程序,允许用户使用他们的Gmail帐户登录。一旦用户登录,我就可以使用result.user对象看到它的详细信息 -

function signInWithGoogle(){

   var provider=new firebase.auth.GoogleAuthProvider();
   firebase.auth().signInWithPopup(provider).then(function(result){

      var user=result.user;

      console.log("user_provider="+user.displayName+" user_email="+user.email+" user_dp="+user.photoURL+" user_verification="+user.emailVerified+" uid="+user.uid);

   }).catch(function(error){
        console.log("error="+error);
   });
}

登录后,我想在重新加载和刷新之后保留页面中的用户详细信息,因为我使用了auth()的User对象 -

$(document).ready(function(){
     var user=firebase.auth().currentUser;
     console.log(user);
});

但它将用户显示为null虽然我可以在firebase中的身份验证控制台中看到用户电子邮件地址。

P.S。我也使用了onAuthStateChanged而不是currentUser,但它仍然没有用。

1 个答案:

答案 0 :(得分:0)

onAuthStateChanged应该有效。你必须正确地听。

firebase.auth().onAuthStateChanged(function(user) {
  if (user) {
    // currentUser should be available now.
  } else {
    // No user logged in.
  }
});

请记住,状态存储在单个主机源Web存储中。因此,如果您导航到具有不同域的页面,则状态将不会传播。