登录后从 Firebase Auth 读取自定义参数?

问题描述 投票:0回答:1

这与这里的问题类似

const provider = new GoogleAuthProvider()
  provider.setCustomParameters({
    prompt: 'select_account',
    state: 'saveAction',
  })
  await signInWithRedirect(getAuth(), provider)

我想了解是否有一种方法可以在登录完成后读取我的

getRedirectResult
中的任何自定义参数。

我需要从我的应用程序传递一些

state
,例如用户正在执行的操作,并且需要在登录后完成。

javascript firebase firebase-authentication google-oauth
1个回答
0
投票

我无法找到解决方案,因此我的解决方法是保留在 localStorage 中并在成功登录后获取它。

  • 存储在本地存储中:在触发重定向之前,使用
    localStorage.setItem(key, value)
    将自定义参数存储在浏览器的本地存储中。您可以使用唯一的密钥来识别您的自定义参数。
  • 登录后检索:用户成功登录后重定向回您的应用程序后,您可以照常使用 getRedirectResult。然后,使用
    localStorage.getItem(key)
    检索您之前存储在本地存储中的自定义参数。

举个例子

// Before redirecting for sign-in
const customParams = { action: "user_registration" };
localStorage.setItem("myCustomParams", JSON.stringify(customParams));

firebase.auth().signInWithRedirect(provider, { state: customParams });

// After successful sign-in and getRedirectResult
const retrievedParams = JSON.parse(localStorage.getItem("myCustomParams"));
console.log("Retrieved custom parameters:", retrievedParams);

// Clear storage after use
localStorage.removeItem("myCustomParams");
© www.soinside.com 2019 - 2024. All rights reserved.