Firebase用户电子邮件始终经过验证

cidc1ykv  于 2023-11-21  发布在  其他
关注(0)|答案(2)|浏览(202)

为什么用户的电子邮件总是被验证?
我不知道为什么用户电子邮件仍然验证和重新加载功能返回真,即使我不验证电子邮件,但我收到邮件。

import "package:firebase_auth/firebase_auth.dart";
import "package:firebase_core/firebase_core.dart";
import "package:flutter/material.dart";
import "package:my_chat_app/View/pages/home.page.dart";
import "package:my_chat_app/View/pages/login.page.dart";

void main() async {
    WidgetsFlutterBinding.ensureInitialized();
    await Firebase.initializeApp(
        options: const FirebaseOptions(
            apiKey: "AIzaSyBKZ_8PVfbb_VwHw4P8yTMcFOH6zoM_oZE",
            appId: "1:36434956024:android:60204da7a7e7c1877a750d",
            messagingSenderId: "messagingSenderId",
            projectId: "chat-app-27389"),
  );

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
    User? user = FirebaseAuth.instance.currentUser;
    Future<bool> reload(User user) async {
        await FirebaseAuth.instance.currentUser?.reload();
        return user.emailVerified;
  }

  @override
  Widget build(BuildContext context) {
      User? user = FirebaseAuth.instance.currentUser;
      return MaterialApp(
          debugShowCheckedModeBanner: false,
          home: user != null && reload(user) == true
              ? const HomePage()
              : LoginPage());
  }
}

字符串
这是sign in/up方法的实现:
当用户按下登录按钮时:

MyBotton(
  btnText: "Login",
  onTap: () {
    reload();
    if (_formKey.currentState!.validate()) {
      firebaseServices!.loginWithEmailPassword(
          emailController.text,
          passwordController.text,
          context);
    }
  },
),

jm81lzqq

jm81lzqq1#

这取决于使用的登录方法。如果用户使用Google登录,则emailVerified将始终返回true,如果不是这种情况,则提供显示实现的登录方法的代码。此外,您可以从帖子或任何公共视图中取出apiKey吗?这是危险的

jaxagkaj

jaxagkaj2#

你的reload是一个返回Future<bool>的异步方法。这意味着reload(user) == true甚至不应该在下面的代码中编译:

home: user != null && reload(user) == true
  ? const HomePage()
  : LoginPage());

字符串
如果你想在构建UI时使用Future,你需要use a FutureBuilder

相关问题