尝试:
import firebase from 'firebase/app';
import 'firebase/auth';
import 'firebase/firestore';
firebase.initializeApp(...);
const auth = firebase.auth();
// I inspected `auth` here to verify that I'm authenticating
// with the right project where the Email/Password sign-in provider
// is enabled.
auth.createUserWithEmailAndPassword(email, password).then(() => {
// All fine until here, new user is created.
auth.sendSignInLinkToEmail(email, {
url: window.location.href,
handleCodeInApp: true,
}).catch(error => {
// Here, the error below is thrown.
});
});
抛出:
[auth / operation-not-allowed]为此Firebase项目禁用了给定的登录提供程序。在Firebase控制台的“身份验证”部分的登录方法标签下启用该功能。
有趣的是,这可以按预期进行:
auth.onAuthStateChanged(user => {
// some logic here, and then:
user
.sendEmailVerification()
.then(() => {
// email is sent fine
})
});
Here是一个可重复的最小示例,它演示了该问题。请确保将电子邮件地址更改为以前没有使用过的电子邮件地址,以查看上面的错误。
此错误的原因可能是什么?
我正在使用firebase@5.8.3
答案 0 :(得分:2)
电子邮件验证不是提供者。这就是为什么您可以使用它而不会看到operation-not-allowed
错误的原因。它仅用于验证电子邮件。
电子邮件链接登录是一种登录方法,将允许用户使用该电子邮件链接登录。前者不需要启用,而后者则需要启用。 您可以按照Doug上面列出的说明启用它。
答案 1 :(得分:1)
错误消息告诉您确切的问题是什么以及如何解决。听起来您没有在Firebase控制台中启用电子邮件/密码身份验证方案。这是documented setup instructions的一部分:
开始之前
- 将Firebase添加到您的JavaScript项目中。
- 如果尚未将应用程序连接到Firebase项目,请从Firebase控制台进行连接。
- 启用电子邮件/密码登录:
- 在Firebase控制台中,打开“身份验证”部分。
- 在“登录方法”选项卡上,启用“电子邮件/密码”登录方法,然后单击“保存”。