如何解决在FirebaseUI身份验证过程中的什么时候可以访问用户凭据?
请参阅Next.js github上的官方example,其中显示了将Firebase auth与next结合使用。
我研究的许多项目,有时使用createUserWithEmailAndPassword。这样,他们可以**使用用户凭据来执行诸如在Firestore数据库的“用户”集合中创建新文档之类的操作。 This stack answer和此tutorial指的是这种方法。
我链接的示例(我认为)使用firebase-ui-代码的auth部分如下所示:
const firebaseAuthConfig = {
signInFlow: 'popup',// Auth providers
// https://github.com/firebase/firebaseui-web#configure-oauth-providers
signInOptions: [
{
requireDisplayName: true,provider: firebase.auth.EmailAuthProvider.PROVIDER_ID,},],signInSuccessUrl: '/',credentialHelper: 'none',callbacks: {
signInSuccessWithAuthResult: async ({ user },redirectUrl) => {
const userData = mapUserData(user)
setUserCookie(userData)
},}
const FirebaseAuth = () => {
// Do not SSR FirebaseUI,because it is not supported.
// https://github.com/firebase/firebaseui-web/issues/213
const [renderAuth,setRenderAuth] = useState(false)
useEffect(() => {
if (typeof window !== 'undefined') {
setRenderAuth(true)
}
},[])
return (
<div>
{renderAuth ? (
<StyledFirebaseAuth
uiConfig={firebaseAuthConfig}
firebaseAuth={firebase.auth()}
/>
) : null}
</div>
)
}
在认证过程中是否可以使用callbacks: {}
实现相同的目的?还有其他方法可以访问用户凭据并传递给Firestore集合吗? (我正在尝试在我的应用程序代码中执行此操作,而不是作为云函数来执行此操作。)
我还注意到通常情况下,我看到以下内容:signInSuccessWithAuthResult: async(authResult) => {}
-示例项目中有signInSuccessWithAuthResult: async ({ user },redirectUrl) => {}
有人可以指出我正确的方向吗?
解决方法
实际上没有必要“获得对用户凭据的访问权限”。您唯一需要担心的是确保在用户登录后 后执行所有Firebase查询。登录的方式无关紧要。
您可以使用auth state observer来检测用户何时登录。观察者回调将通知您用户何时登录。
leading: Icon(task["icon"])
当回调被调用并提供给用户对象时,即可以使用分配给用户的特权查询数据库。您无需“将信息传递给Firestore”即可让其知道已登录的用户。如果您同时使用Auth和Firestore的Firebase SDK,则会自动发生。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。