Flutter + Firebase 项目中基于 Google 的登录问题

问题描述 投票:0回答:1

我有一个用户可以登录和退出的视图,目前支持电子邮件和Google登录。使用 Google 登录工作正常,但是当用户退出并尝试再次使用 Google 登录时,没有任何反应,“登录”按钮上永远显示一个旋转图标(在尝试登录之前等待没有任何区别) .

import 'package:firebase_ui_auth/firebase_ui_auth.dart';
import 'package:flutter/material.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:google_sign_in/google_sign_in.dart';

final GoogleSignIn _googleSignIn = GoogleSignIn();

class AuthenticationScreen extends StatelessWidget {
  const AuthenticationScreen({super.key});

  Future<void> signout() async {
    await _googleSignIn.disconnect();
    await _googleSignIn.signOut();
    await FirebaseAuth.instance.signOut();
  }

  @override
  Widget build(BuildContext context) {
    return StreamBuilder<User?>(
      stream: FirebaseAuth.instance.authStateChanges(),
      builder: (context, snapshot) {
        if (!snapshot.hasData) {
          return const SizedBox(
            height: 600,
            child: SignInScreen(),
          );
        } else {
          return ElevatedButton(
            onPressed: () {
              signout();
            },
            child: const Text("Sign out"),
          );
        }
      },
    );
  }
}

如果我在注销后热重新加载应用程序,则登录工作正常。在我看来,有些东西没有清理或正确断开连接,这导致注销后无法登录,但是我看到的所有示例似乎都没有在清理方面起到多大作用...

flutter firebase-authentication google-signin
1个回答
0
投票

如果弹出窗口中只有一个帐户并且您第一次选择它,那么下次它将自动选择该帐户。如果有多个帐户,则只会要求选择要登录的帐户。您可以在这里查看我的演示https://github.com/Ankit-Slnk/flutter-google-auth-demo。您也可以在网络中测试它https://flutter-web-google-auth.netlify.app/#/

© www.soinside.com 2019 - 2024. All rights reserved.