如何在 Firebase 中设置无密码电子邮件登录?
How can I setup passwordless email signin in Firebase?
我正在尝试在 Firebase 中设置无密码身份验证。我已经在我的项目设置中启用了“没有密码的电子邮件”身份验证。
使用此文档:https://firebase.google.com/docs/auth/admin/email-action-links#generate_email_link_for_sign-in 我设法实现了一种创建 auth links 的方法。
我的目标是使用用户的电子邮件打开 https://dev.test.com/signup/,以便他立即登录。
到目前为止,这是我的代码:
import firebase_admin
from firebase_admin import auth
def main():
default_app = firebase_admin.initialize_app()
email = 'name.chris@gmail.com'
action_code_settings = auth.ActionCodeSettings(
url=f'https://dev.test.com/signup/?email={email}',
handle_code_in_app=True,
ios_bundle_id='com.example.ios',
android_package_name='com.example.android',
android_install_app=True,
android_minimum_version='12',
dynamic_link_domain='magic42.page.link',
)
link = auth.generate_sign_in_with_email_link(email, action_code_settings)
print(f"LINK = {link}")
当我点击 link 时,我没有自动登录。我想我也应该修改我的前端。我正在使用 Angular。我的注册看起来像这样:
signUp(email: string, password: string): Observable<UserCredential> {
const credential = firebase.auth.EmailAuthProvider.credential(email, password);
return from(firebase.auth().currentUser.linkWithCredential(credential));
}
我很困惑为什么你在前端有电子邮件和密码。要使用电子邮件 link 完成登录,您应该使用 firebase.auth().signInWithEmailLink()
方法,而不是 /signup 页面上的 linkWithCredential。
您可以在文档中获取使用电子邮件 link 完成登录的示例代码(应在您的 /signup 页面上执行):
https://firebase.google.com/docs/auth/web/email-link-auth
我正在尝试在 Firebase 中设置无密码身份验证。我已经在我的项目设置中启用了“没有密码的电子邮件”身份验证。 使用此文档:https://firebase.google.com/docs/auth/admin/email-action-links#generate_email_link_for_sign-in 我设法实现了一种创建 auth links 的方法。 我的目标是使用用户的电子邮件打开 https://dev.test.com/signup/,以便他立即登录。
到目前为止,这是我的代码:
import firebase_admin
from firebase_admin import auth
def main():
default_app = firebase_admin.initialize_app()
email = 'name.chris@gmail.com'
action_code_settings = auth.ActionCodeSettings(
url=f'https://dev.test.com/signup/?email={email}',
handle_code_in_app=True,
ios_bundle_id='com.example.ios',
android_package_name='com.example.android',
android_install_app=True,
android_minimum_version='12',
dynamic_link_domain='magic42.page.link',
)
link = auth.generate_sign_in_with_email_link(email, action_code_settings)
print(f"LINK = {link}")
当我点击 link 时,我没有自动登录。我想我也应该修改我的前端。我正在使用 Angular。我的注册看起来像这样:
signUp(email: string, password: string): Observable<UserCredential> {
const credential = firebase.auth.EmailAuthProvider.credential(email, password);
return from(firebase.auth().currentUser.linkWithCredential(credential));
}
我很困惑为什么你在前端有电子邮件和密码。要使用电子邮件 link 完成登录,您应该使用 firebase.auth().signInWithEmailLink()
方法,而不是 /signup 页面上的 linkWithCredential。
您可以在文档中获取使用电子邮件 link 完成登录的示例代码(应在您的 /signup 页面上执行): https://firebase.google.com/docs/auth/web/email-link-auth