[英]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.