我一直在查看firebase-admin SDK文档和讨论组,但找不到任何使用我的域服务器端生成signInWithEmailLink的提示。
是否可以使用我的域在服务器端中自定义登录链接?或者只能在客户端应用程序中实现?
使用您的身份提供商更新回调 URL,以使用您的自定义域而不是默认域。例如,将 https://myproject.firebaseapp.com/__/auth/handler 更改为 https://auth.mycustomdomain.com/__/auth/handler。
这是我的实际工作,但我更喜欢最干净的解决方案。
let link = await getAuth().generateSignInWithEmailLink(email, actionCodeSettings);
if(link.startsWith("https://myproject.firebaseapp.com")) {
link = link.replace("https://myproject.firebaseapp.com", process.env.AUTH_URL);
}
进入模板页面,点击编辑,然后点击“自定义域名”。
这样做的好处是它不仅影响 Firebase 管理。
你的方法实际上是一个很好的方法,但是用普通的字符串替换有点粗糙。尝试使用
URL
类,它更清晰且不易出错。
const link = await getAuth().generateSignInWithEmailLink(email, actionCodeSettings);
const linkUrl = new URL(link);
const authUrl = new URL(process.env.AUTH_URL);
linkUrl.hostname = authUrl.hostname;
// you will get your custom domain replaced in the generated url
console.log(linkUrl.toString());