簡體   English   中英

無法使用其他帳戶登錄 Google(FlutterFire 軟件包)

[英]Google Sign-in with a different account is not working (FlutterFire Package)

當我使用我的一個 Google 帳戶登錄時,登錄效果很好。 但是退出后,當我嘗試使用其他帳戶登錄時,該應用程序不會彈出谷歌帳戶列表,而是直接登錄到我登錄的前一個帳戶。

這是 Main.dart main.dart 的代碼片段 ->>

import 'package:flutter/material.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:social_media_app/widget/auth_gate.dart';

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return ScreenUtilInit(
      designSize: const Size(375, 667),
      minTextAdapt: true,
      builder: () {
        return GetMaterialApp(
          debugShowCheckedModeBanner: false,
          title: 'Flutter Demo',
          theme: ThemeData(
            primarySwatch: Colors.blue,
          ),
          home: const AuthGate(),
        );
      },
    );
  }
}

這是 AuthGate 的代碼片段。 auth_gate.dart -->

import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart';
import 'package:flutterfire_ui/auth.dart';

class AuthGate extends StatelessWidget {
  const AuthGate({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return StreamBuilder<User?>(
      stream: FirebaseAuth.instance.authStateChanges(),
      builder: (context, snapshot) {
        if (!snapshot.hasData) {
          return SignInScreen(
            // showAuthActionSwitch: false,
            subtitleBuilder: (context, action) {
              return Padding(
                padding: const EdgeInsets.only(bottom: 8),
                child: Text(
                  action == AuthAction.signIn
                      ? 'Welcome to FlutterFire UI! Please sign in to continue.'
                      : 'Welcome to FlutterFire UI! Please create an account to continue',
                ),
              );
            },
            footerBuilder: (context, _) {
              return const Padding(
                padding: EdgeInsets.only(top: 16),
                child: Text(
                  'By signing in, you agree to our terms and conditions.',
                  style: TextStyle(color: Colors.grey),
                ),
              );
            },
            sideBuilder: (context, constraints) {
              return Padding(
                padding: const EdgeInsets.all(20),
                child: AspectRatio(
                  aspectRatio: 1,
                  child: Image.network(
                      'https://firebase.flutter.dev/img/flutterfire_300x.png'),
                ),
              );
            },
            headerBuilder: (context, constraints, _) {
              return Padding(
                padding: const EdgeInsets.all(20),
                child: AspectRatio(
                  aspectRatio: 1,
                  child: Image.network(
                    'https://firebase.flutter.dev/img/flutterfire_300x.png',
                  ),
                ),
              );
            },
            providerConfigs: const [
              EmailProviderConfiguration(),
              PhoneProviderConfiguration(),
              GoogleProviderConfiguration(
                clientId: '1:778935804680:android:d2da33128b67cdc68c42bd',
              ),
              FacebookProviderConfiguration(
                clientId: '...',
              ),
            ],
          );
        }
        return const ProfileScreen(
          providerConfigs: [
            EmailProviderConfiguration(),
            GoogleProviderConfiguration(
              clientId: '1:778935804680:android:d2da33128b67cdc68c42bd',
            ),
            FacebookProviderConfiguration(
              clientId: '...',
            ),
          ],
          avatarSize: 200,
        );
      },
    );
  }
}

我認為您首先在任何打開的瀏覽器中退出了谷歌,對嗎? 我相信這個想法是通過使用通常已經建立的谷歌登錄來加速登錄。 因此,如果您有更多,請在其他 windows 中注銷。

您應該在顯式斷開與 googleSignIn 的連接處添加額外的代碼行。

final googleSignIn = GoogleSignIn();

. . .

Future logout() async {
    await googleSignIn.disconnect();
    FirebaseAuth.instance.signOut();
}

另外,請務必添加 google_sign_in package :)

不確定我是否可以回答你的問題。 我被困在這里。 你能告訴我你是如何得到clientId的:'1:778935804680:android:d2da33128b67cdc68c42bd',我找不到它。

實際上,我的應用確實會嘗試驗證 google 帳戶,但一旦完成,它就會再次返回登錄屏幕。 不知道為什么會這樣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM