我在我的 flutter 应用程序上构建了一个电子邮件验证页面,供用户在登录之前验证他们的电子邮件。因此,在验证页面中,我有一个按钮,允许用户在登录后 5 秒后重新发送验证电子邮件已发送。
Future sendVerificationEmail() async {
try{
final user = FirebaseAuth.instance.currentUser!;
await user.sendEmailVerification();
setState(() => canResendEmail = false);
await Future.delayed(const Duration(seconds: 5));
canResendEmail = true;
}catch (e) {
Utils.showSnackBar(e.toString());
}
}
...............................
ElevatedButton.icon(
icon: const Icon(Icons.email, size: 32),
label: const Text("Resend email"
),
onPressed: canResendEmail ? sendVerificationEmail : null,
),
但是问题是当我尝试再次重新发送电子邮件时,大多数时候我都会收到错误消息:
[firebase-auth/请求过多] 由于异常活动,我们已阻止来自此设备的所有请求。稍后再试。
嗯,我知道这对于安全性很有好处,但它根本不一致。就像有时我可以在 30 秒内重新发送 5 封电子邮件,有时它会持续显示此错误超过 2 分钟。 我的问题是我是否可以在 firebase 中设置一些规则,以便我可以每秒发送一定数量的电子邮件请求,或者至少知道我可以再次发送请求之前需要等待的确切时间是多少而不是这种随机情况,有时我可以在短时间内发送多个请求。
我能够通过添加以下内容来解决这个问题,每https://github.com/firebase/firebase-android-sdk/issues/2358:
FirebaseAuth.instance.setSettings(appVerificationDisabledForTesting: true);