为什么Firebase的“ getRedirectResults()”返回“ {user:null}”?

Jbb*_*bae 5 javascript firebase reactjs firebase-authentication

当前,当用户通过社交身份验证(通过重定向)时,它会在Firebase Authentication下成功创建用户,但无法检索Google / Facebook API的数据。对于身份验证成功后如何无法检索数据感到困惑。

我以前只拥有SignInWithPopup(效果很好),但是我试图让getRedirectResults也能工作(对于移动设备)。

考虑到我一直看到的行为,问题很可能与getRedirectResults有关。很有可能不是社交API设置,因为否则用户将永远无法在身份验证中创建。

以下代码位于componentDidMount(这是一个React.js应用程序)中:

if (this.state.device === 'mobile') {
  firebase.auth().getRedirectResult().then(function(result) {
    console.log('login successful! Data is:');
    console.log(result);

    if (result.credential) {
      var provider = result.credential.providerId;
      self.handleSocialAuth(provider, result);
    }
  }).catch(function(error) {
    var errorCode = error.code;
    var errorMessage = error.message;
  });
}
Run Code Online (Sandbox Code Playgroud)

结果应该包含用户的数据,并不断返回:

login successful! Data is:
{user: null}
Run Code Online (Sandbox Code Playgroud)

我没有偏离官方文档示例,这就是为什么我感到困惑的原因。

Ser*_*are 4

firebase.auth().getRedirectResult()- 在页面加载后调用。官方文档链接:https://firebase.google.com/docs/auth/web/google-signin

使用以下方法检索登录的用户。

firebase.auth().onAuthStateChanged(function(user) {
          console.log(user);
});
Run Code Online (Sandbox Code Playgroud)

如果没有用户登录,则会user出现null.

实例:

checkAuthStatus(){
        firebase.auth().onAuthStateChanged(user => {
            this.setState({ btnWithImg: user });

            if(user !== null){
                this.setState({ userIsLoggedIn: true });
                this.props.toggleLogIn();
            }
        });
    }
Run Code Online (Sandbox Code Playgroud)

  • 这个答案对OP的问题没有任何帮助 (3认同)
  • 除了 onAuthStateChanged 在每次登录/注销时触发这一事实。`getRedirectResults()` 的目的是能够在新用户注册时编写初始化逻辑(正如文档中明确指出的那样)。对我来说也是空的。 (3认同)