Firebase signInWithPopup()函数,在窗口中弹出Google登录,但弹出窗口不显示任何Google帐户

时间:2019-09-08 15:59:02

标签: javascript reactjs firebase firebase-authentication

我正在使用Firebase执行“ Google登录身份验证” ...,但登录弹出窗口未显示任何可用的google用户,并且弹出窗口在大约5秒钟后消失,并且不执行任何操作

firebase.js中的代码:

import firebase from "firebase/app";
import "firebase/firestore";
import "firebase/auth";

var firebaseConfig = {
  apiKey: "AIzaSyDSxAzARyErU6gr7ujsEfg2hB6DYz02OnA",
  authDomain: "crwn-db-3c771.firebaseapp.com",
  databaseURL: "https://crwn-db-3c771.firebaseio.com",
  projectId: "crwn-db-3c771",
  storageBucket: "",
  messagingSenderId: "395022734699",
  appId: "1:395022734699:web:39122ca48383548f"
};
// Initialize Firebase
firebase.initializeApp(firebaseConfig);

export const auth = firebase.auth();
export const firestore = firebase.firestore();

const provider = new firebase.auth.GoogleAuthProvider();
provider.setCustomParameters({ prompt: "select_account" });
export const signInWithGoogle = () => auth.signInWithPopup(provider);

export default firebase;

sign-in.jsx中的代码:

import { signInWithGoogle } from "../../firebase/firebase.utils";


class SignIn extends React.Component {
  render() {
    return (
          <CustomButton onClick={signInWithGoogle}>
            Sign in with Google
          </CustomButton>
      </div>
    );
  }
}

export default SignIn;

signInWithGoogle弹出窗口应显示可用的Google帐户,我从中选择一个,然后继续,然后将该用户注册为Firebase身份验证用户。 但是弹出窗口没有显示任何可用的Google帐户(我的浏览器中有两个登录帐户),并且弹出窗口在大约5秒钟后自动消失。

enter image description here

5 个答案:

答案 0 :(得分:0)

您是否尝试启用提供程序?对于您的示例,您必须进入firebase中的项目,转到“身份验证”标签,然后单击“登录方法”并检查是否启用了Google。

答案 1 :(得分:0)

对于用户实际上是使用也已登录Chrome的Google帐户自动登录的情况,这听起来很正常。添加一个身份验证状态侦听器,并添加一些日志以检查用户在该点是否实际登录。

答案 2 :(得分:0)

我遇到了同样的问题,我重新启动了Mac,它运行正常。如果该错误仍然存​​在,请尝试以下操作:

代替此

export const signInWithGoogle = () => auth.signInWithPopup(provider); 

使用此:

export const signInWithGoogle = () => auth.signInWithRedirect(provider);

答案 3 :(得分:0)

我也面临着同样的问题。我在Chrome上启用了第三方Cookie,并且可以正常工作,所以请尝试一下。

答案 4 :(得分:0)

如果您希望 Firebase signInWithGoogle 在使用当前身份验证令牌之前停止并询问要登录哪个 google 帐户,您将需要使用 setCustomerParameters 方法并像这样手动调用提示.. .

var provider = new firebase.auth.GoogleAuthProvider();
provider.setCustomParameters({
  prompt: "select_account"
});

//works for signInWithPopup and signInWithRedirect

const signInWithPopup = () => auth.signInWithPopup(provider);  
const signInWithRedirect = () => auth.signInWithRedirect(provider);

链接到 setCustomerParameters documentation