我正在使用 firebase google nuxt 库来通过 Google 登录。
nuxt.config.js中的设置
firebase: {
config: {
apiKey: 'XXXXXXXX',
authDomain: 'XXXXXXXX',
databaseURL: 'XXXXXXXX',
projectId: 'XXXXXXXX',
storageBucket: 'XXXXXXXX',
messagingSenderId: 'XXXXXXXX',
appId: 'XXXXXXXX',
},
services: {
auth: {
persistence: 'local',
initialize: {
onAuthStateChangedMutation: 'XXXXXXXX',,
onAuthStateChangedAction: 'XXXXXXXX',
subscribeManually: false,
},
ssr: false, // default
emulatorPort: 'XXXXXXXX',
emulatorHost: 'XXXXXXXX',
},
google: {
clientId: 'XXXXXXXX',
},
},
},
使用
signInWithGooglePopup: function ({ dispatch }) {
const provider = new this.$fireModule.auth.GoogleAuthProvider();
const auth = this.$fire.auth
return Promise.resolve()
.then(() => auth.signInWithPopup(provider))
}
我设法登录系统,但出现问题,如果 Google 中保存了一封电子邮件,则 Google 登录窗口(登录弹出窗口)不会提供选择我是否要使用现有保存的电子邮件登录的选项或添加一个新的。 Google 登录窗口(弹出窗口)会自动使用他们已知的电子邮件让我登录。这对于我的应用程序来说不是一个好的行为。
我尝试在每次调用 Google 登录窗口(弹出窗口)时进行额外的注销,但问题并未解决。
我尝试过的示例
signInWithGooglePopup: function ({ dispatch }) {
const provider = new this.$fireModule.auth.GoogleAuthProvider();
const auth = this.$fire.auth
return Promise.resolve()
.then(() => auth.signOut())
.then(() => auth.signInWithPopup(provider))
}
帮助我弄清楚如何让 Google 登录窗口(弹出窗口)建议我想要哪个用户登录系统,而不是为我决定。
最佳答案
解决方案是将自定义参数添加到 GoogleAuthProvider:
const provider = new this.$fireModule.auth.GoogleAuthProvider();
provider.setCustomParameters({ prompt: 'select_account' });
关于firebase - Google 登录弹出窗口自动选择让我登录的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72290910/