Flutter Firebase 身份验证忽略 header X-Firebase-Locale,因为它的值为 null

标签 flutter firebase firebase-authentication

我正在尝试通过电子邮件和密码注册和登录将 Firebase 身份验证添加到我的应用程序。当我对其进行测试时,它不会导航到下一个屏幕并且我收到以下消息:

“忽略 header X-Firebase-Locale,因为它为空”

但是,当我转到 Firebase 时,它​​显示我输入的信息已存储为新用户。有人可以提供一些关于正在发生的事情的见解吗?

这是我的 main.dart:

int? isViewed;
Future <void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();
  
  final prefs = await SharedPreferences.getInstance();
  final showLogin = prefs.getBool('showLogin') ?? false;
  Paint.enableDithering = true;
  
// This is for our onboarding screen
isViewed = prefs.getInt('onboard');

  runApp(MyApp(showLogin: showLogin));
}

class MyApp extends StatelessWidget {
  final bool showLogin;
  
  const MyApp({Key? key,
  required this.showLogin}) : super(key: key);


  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Strength',
      debugShowCheckedModeBanner: false,
      theme: ThemeData(
        appBarTheme: const AppBarTheme(color: Color(0xffe0eff5),
        elevation: 0,
        brightness: Brightness.light,
        iconTheme: IconThemeData(color: Colors.black),
        textTheme: TextTheme(headline6: TextStyle(color: Color(0xff888888), fontSize: 18),
        )
      ),),
      home: const SplashScreen(),
    );
  }
}

这是我的 signup.dart 的一部分:

class SignUpScreen extends StatefulWidget {
  const SignUpScreen({Key? key}) : super(key: key);

  @override
  _SignUpScreenState createState() => _SignUpScreenState();

}

class _SignUpScreenState extends State<SignUpScreen> {
  TextEditingController _passwordTextController = TextEditingController();
  bool showPassword = false;
  bool _isPasswordEightLetters = false;
  bool _OneNumberPassword = false;
  TextEditingController _emailTextController = TextEditingController();

  OnPasswordChanged(String password) {
    
    final numericRegex = RegExp(r'[0-9;]');

    setState(() {

      _isPasswordEightLetters = false;
      if (password.length >= 8) {
        _isPasswordEightLetters = true;
      }

      _OneNumberPassword = false;
      if(numericRegex.hasMatch(password)) {
        _OneNumberPassword = true;
      }
    });
  }
.
.
.

Container(
                        child: TextFormField(
                          controller: _emailTextController,
                          style: const TextStyle(color: Colors.black),
                          keyboardType: TextInputType.emailAddress,
                          // inputFormatters: <TextInputFormatter>[
                          //   FilteringTextInputFormatter.allow(RegExp(r'[0-9]'))
                          // ],
                          decoration: InputDecoration(
                            hintText: "Enter Your Email Address",
                            hintStyle: const TextStyle(color: Color(0xff31708c),
                            fontSize: 15.5),
                            prefixIcon: const Icon(Icons.email_sharp,
                            color: Color(0xff31708c)),
                            focusedBorder: OutlineInputBorder(
                              borderRadius: BorderRadius.circular(10),
                              borderSide: const BorderSide(color: Color(0x6630728c))),
                              enabledBorder: OutlineInputBorder(
                                borderRadius: BorderRadius.circular(10),
                                borderSide: const BorderSide(color: Color(0x6630728c),
                              ),
                          ),
                        ),
                        autofillHints: const [AutofillHints.email]
                        ),
                        decoration: BoxDecoration(color: Colors.blueGrey.withOpacity(0.08),
                        borderRadius: BorderRadius.circular(10)),
                      )
.
.
.
ButtonTheme(
                      minWidth: MediaQuery.of(context).size.width,
                      height: 55,
                      buttonColor: const Color(0xff31708c),
                      child: RaisedButton(
                        onPressed: () {
                          FirebaseAuth.instance.createUserWithEmailAndPassword(
                            email: _emailTextController.text, 
                            password: _passwordTextController.text).then((_) {
                              print('New Account Created');
                          Navigator.of(context).
                          pushReplacement(MaterialPageRoute(builder: (context) => Dashboard()));
                          }
                      ).onError((error, stackTrace) {
                        print('Error');
                      });
                      },
                        shape: RoundedRectangleBorder(
                          borderRadius: BorderRadius.circular(20),
                        ),
                        child: const Text("Sign Up",
                        style: TextStyle(color: Colors.white,
                        fontSize: 18,
                        fontWeight: FontWeight.bold),
                        ),
                      ),
                    )

最佳答案

准备

  1. 检查您的模拟器是否有权访问互联网并连接到。
  2. 您的 firebase 控制台中的电子邮件/密码登录方法已启用以获得访问权限。

第 1 步: 创建 sha1 key + 调试 key 信息 + 添加 firebase。 我猜你的 sha1 key 可能只有来自发布 key 的正常信息?

第 2 步:从 console.cloud.google.com 激活 Android 设备验证并插入 firebase 自动生成的 sha key + 他们的匹配首选项(如 package name...)

结论

我觉得你的代码不错!一切都设置正确。我认为您忘记了一些琐碎的设置或正确的 sha key 。

关于Flutter Firebase 身份验证忽略 header X-Firebase-Locale,因为它的值为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73654264/

相关文章:

image - 如何将图像转换为字节并在 flutter 中再次将其转换为图像?

ios - Flutter Firebase 回调不会在 iOS 13 上触发,但在 Android 上可以正常工作

android - Firebase 获取名字和姓氏

javascript - 如何在集合中获取数据firebase集合

Android Firebase Phone Auth 第二次没有收到短信

javascript - 如何使用 Firebase 删除除 currentUser 之外的任何其他用户?

flutter - ListBody中的空值

flutter - 如何在 Flutter 中处理不同屏幕尺寸上的定位元素(在 Stack 中)?

dart - 错误 : Only static members can be accessed in initializers what does this mean?

email - 使用 Flutter 的电子邮件进行 Firebase 身份验证