使用ReactJS网络和FirebaseUI身份验证。
我正在尝试创建一个signInSuccessUrl,其中包括已登录用户的uid:/users/${userId}
。
我的假设是,这需要在回调中定义,但我似乎无法使其正常工作。
当前,它默认重定向到signInSuccessUrl
,而不是使用回调...
非常感谢您的帮助!
const uiConfig = {
signInFlow: 'popup',
signInSuccessUrl: '/',
signInOptions: [
firebase.auth.GoogleAuthProvider.PROVIDER_ID,
firebase.auth.FacebookAuthProvider.PROVIDER_ID,
{ provider: firebase.auth.EmailAuthProvider.PROVIDER_ID,
requireDisplayName: true
},
],
// the area where i assume something is going wrong...
callbacks: {
signInSuccess: function(currentUser, credential, redirectUrl) {
const userId = currentUser.uid;
redirectUrl = `/users/${userId}`;
return false
},
}
};
redirectUrl
不是您的想法。如果将signInSuccessUrl
查询参数的内容附加到当前页面,则将其填充。它提供了一种在登录流程结束时获取该URL的简便方法,如果您使用accountchooser.com,则很难获得该URL。
要获得所需的行为,请将代码更改为以下内容:
signInSuccess: function(currentUser, credential, redirectUrl) {
const userId = currentUser.uid;
// Manually redirect.
window.location.assign(`/users/${userId}`);
// Do not automatically redirect.
return false;
},
使用AuthUI
时,将URL设置为配置对象的另一种方法。
var uiConfig = {
signInSuccessUrl: window.location.href,
signInOptions: [ ... ]
}
var ui = new firebaseui.auth.AuthUI(firebase.auth());
ui.start('#firebaseui-auth-container', uiConfig);