我正在尝试将 firebase 身份验证与我的自定义 Nodejs 服务器集成。电子邮件/密码策略非常简单,因为管理 sdk 支持所需的所有操作。然而,对于提供商来说,文档指示我们手动处理登录流程 https://firebase.google.com/docs/auth/web/google-signin#expandable-2并从 google 或 facebook 获取一些令牌,然后将其发送到我们的 Nodejs 服务器。
所以当令牌到达我们的nodejs服务器时文档 https://firebase.google.com/docs/auth/web/google-signin#expandable-3提供了一些来自客户端sdk的代码。
这是 firebase 文档中的示例
import { getAuth, signInWithCredential, GoogleAuthProvider } from "firebase/auth";
// Build Firebase credential with the Google ID token.
const credential = GoogleAuthProvider.credential(id_token);
// Sign in with credential from the Google user.
const auth = getAuth();
signInWithCredential(auth, credential).catch((error) => {
// Handle Errors here.
const errorCode = error.code;
const errorMessage = error.message;
// The email of the user's account used.
const email = error.customData.email;
// The AuthCredential type that was used.
const credential = GoogleAuthProvider.credentialFromError(error);
// ...
});
其中 id_token(可能)来自请求正文。
此流程工作得很好,但它在 Nodejs 服务器环境中使用客户端 sdk,因为针对此类环境的管理 sdk 不支持此类操作。那么,在需要的地方(当然是在 Nodejs 服务器中)使用这两个 SDK 是否可以?
EDIT:
我想要实现的是,当 google id_token (或 facebook 访问令牌)到达我的 nodejs 服务器时,我需要有一种方法在 firebase auth 模块中使用相应的提供者创建一个帐户。所以与signInWithCredential
如果用户不存在,那么将被创建,然后我将发出一个自定义令牌,就像我对电子邮件/密码策略所做的那样。这里唯一的区别是,通过电子邮件/密码策略,我可以使用管理 SDKcreateUser()
用于用户创建。
这种做法对吗?
你的做法是绝对正确的:
1-您收到google ID
来自客户端的令牌(OAuth 或等等...)
2-使用用户登录到 firebasegoogle ID
:
//1 import firebase/auth
import { getAuth, signInWithCredential, GoogleAuthProvider } from "firebase/auth";
//2 configue user credentials
const credential = GoogleAuthProvider.credential(id_token);
//3 run signInWithCredential function
let userData = await signInWithCredential(auth, credential)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)