iOS 上的 Firebase 自动登录失败
Posted
技术标签:
【中文标题】iOS 上的 Firebase 自动登录失败【英文标题】:Firebase automatic login failes on iOS 【发布时间】:2020-12-25 20:19:37 【问题描述】:我正在使用颤振开发应用程序。当用户在 android 设备上登录应用程序,终止应用程序并再次打开应用程序时,我遇到错误,_firebaseAuth.currentUser 返回当前用户详细信息,但在 ios 上执行相同操作时,它返回 null。任何人都可以提出为什么会这样。插件版本是 firebase_auth 0.18.0+1。共享代码以检查 `
bool isSignedIn()
try
final currentUser = _firebaseAuth.currentUser;
return currentUser != null;
catch (error)
return false;
` 我用过这样的块
`
runApp(BlocProvider(
create: (_) => AuthBloc(userRepository: _userRepository)..add(AppStarted()),
child: MyApp(),
));
`
`
Stream<AuthState> _mapAppStarted() async*
try
final isSignedIn = _userRepository.isSignedIn();
if (isSignedIn)
final user = await _userRepository.getUser();
if (user == null)
await _userRepository.signOut();
yield Unauthenticated();
else
List<FollowedFollowingModel> followedFollowingList =
await getFollowingList(user);
yield Authenticated(user, followedFollowingList);
else
yield Unauthenticated();
catch (_)
yield Unauthenticated();
`
【问题讨论】:
【参考方案1】:在 Material widget
内的 main.dart 文件中,您可以像下面这样使用它:
home: FutureBuilder<FirebaseApp>(
future: Firebase.initializeApp(),
builder: (BuildContext context, AsyncSnapshot<FirebaseApp> snapshot)
if (snapshot.connectionState == ConnectionState.done)
return FirebaseAuth.instance.currentUser == null
? GettingStarted()
: Dashboard();
/// other way there is no user logged.
return Scaffold();
),
【讨论】:
然后尝试异步函数 问题是在最新的auth插件中,现在可以不使用async/await获取当前用户了。 我已经更新了问题。添加了我的实现方式以上是关于iOS 上的 Firebase 自动登录失败的主要内容,如果未能解决你的问题,请参考以下文章
Flutter with Firebase Google 登录:断言失败 network_image_io.dart