带有 firebaseui-web 的 Firebase Auth 在身份验证后不会重定向
Firebase Auth with firebaseui-web does not redirect after authentication
我目前正在使用 Firebase Auth 和网络小部件库 firebaseui-web 制作基于登录流程的 VueJS 原型。
身份验证成功后(password
或 google
提供商),小部件加载栏不断重复,firebaseui-web 不会触发其 signInSuccessWithAuthResult
回调。但是对 identitytoolkit.googleapis.com
的网络调用显然已经识别并验证了我的用户(见屏幕截图)
配置对象如下所示:
const uiConfig = {
signInSuccessUrl: "#/loggedin",
signInOptions: [
EmailAuthProvider.PROVIDER_ID,
GoogleAuthProvider.PROVIDER_ID,
],
tosUrl: "http://example.com",
privacyPolicyUrl: "http://example.com",
signInFlow: "redirect",
callbacks: {
signInSuccessWithAuthResult: function (authResult, redirectUrl) {
console.log("signInSuccessWithAuthResult:", authResult, redirectUrl);
return true;
},
uiShown: function () {
console.log("uiShown");
},
},
};
VUeJS代码:
export default {
name: "Home",
data: function () {
return {
fbUI: {},
};
},
methods: {
initFBUI: function () {
const uiReference = firebaseui.auth.AuthUI.getInstance("demoUI");
console.log("uiReference ", uiReference);
this.fbUI =
uiReference !== null
? uiReference
: new firebaseui.auth.AuthUI(this.$fbAuth, "demoUI");
console.log("this.fbUI", this.fbUI);
},
startAuthUI: function () {
console.log("ui.isPendingRedirect()", this.fbUI.isPendingRedirect());
this.fbUI.start("#firebaseui-auth-container", uiConfig);
console.log("this.fbUI started");
},
},
mounted() {
this.initFBUI();
this.startAuthUI();
},
};
可重现的演示和完整代码在 https://github.com/perelin/firebase-auth-providerdata-test.
下
这是此代表的 CodeSandbox:https://codesandbox.io/s/github/perelin/firebase-auth-providerdata-test(有时会抛出 Unexpected token '{'
错误。然后重新加载/重建页面。
如果知道接下来要尝试什么,我将不胜感激!
所以,我发现了问题。 firebaseui.auth.AuthUI
返回的firebaseui实例好像不像是Vue数据属性[1]
很想知道为什么,但是找漏洞耗费了我足够的精力。我完成了:)
我目前正在使用 Firebase Auth 和网络小部件库 firebaseui-web 制作基于登录流程的 VueJS 原型。
身份验证成功后(password
或 google
提供商),小部件加载栏不断重复,firebaseui-web 不会触发其 signInSuccessWithAuthResult
回调。但是对 identitytoolkit.googleapis.com
的网络调用显然已经识别并验证了我的用户(见屏幕截图)
配置对象如下所示:
const uiConfig = {
signInSuccessUrl: "#/loggedin",
signInOptions: [
EmailAuthProvider.PROVIDER_ID,
GoogleAuthProvider.PROVIDER_ID,
],
tosUrl: "http://example.com",
privacyPolicyUrl: "http://example.com",
signInFlow: "redirect",
callbacks: {
signInSuccessWithAuthResult: function (authResult, redirectUrl) {
console.log("signInSuccessWithAuthResult:", authResult, redirectUrl);
return true;
},
uiShown: function () {
console.log("uiShown");
},
},
};
VUeJS代码:
export default {
name: "Home",
data: function () {
return {
fbUI: {},
};
},
methods: {
initFBUI: function () {
const uiReference = firebaseui.auth.AuthUI.getInstance("demoUI");
console.log("uiReference ", uiReference);
this.fbUI =
uiReference !== null
? uiReference
: new firebaseui.auth.AuthUI(this.$fbAuth, "demoUI");
console.log("this.fbUI", this.fbUI);
},
startAuthUI: function () {
console.log("ui.isPendingRedirect()", this.fbUI.isPendingRedirect());
this.fbUI.start("#firebaseui-auth-container", uiConfig);
console.log("this.fbUI started");
},
},
mounted() {
this.initFBUI();
this.startAuthUI();
},
};
可重现的演示和完整代码在 https://github.com/perelin/firebase-auth-providerdata-test.
下这是此代表的 CodeSandbox:https://codesandbox.io/s/github/perelin/firebase-auth-providerdata-test(有时会抛出 Unexpected token '{'
错误。然后重新加载/重建页面。
如果知道接下来要尝试什么,我将不胜感激!
所以,我发现了问题。 firebaseui.auth.AuthUI
返回的firebaseui实例好像不像是Vue数据属性[1]
很想知道为什么,但是找漏洞耗费了我足够的精力。我完成了:)