如何在 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