flutter - Flutter Facebook 登录错误:找不到吸气剂:“成功”。案例 FacebookLoginStatus.Success
问题描述
我正在使用 Flutter 制作我的应用程序,我希望使用 Facebook 进行功能登录,这就是我所做的:
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter_login_facebook/flutter_login_facebook.dart';
abstract class AuthBase {
User get currentUser;
Stream<User> authStateChanges();
Future<User> signInWithFacebook();
Future<void> signOut();
}
class Auth implements AuthBase {
final _firebaseAuth = FirebaseAuth.instance;
@override
Stream<User> authStateChanges() => _firebaseAuth.authStateChanges();
@override
User get currentUser => _firebaseAuth.currentUser;
@override
Future<User> signInWithFacebook() async {
final fb = FacebookLogin();
final response = await fb.logIn(permissions: [
FacebookPermission.publicProfile,
FacebookPermission.email,
]);
switch (response.status) {
case FacebookLoginStatus.Success:
final accessToken = response.accessToken;
final userCredential = await _firebaseAuth.signInWithCredential(
FacebookAuthProvider.credential(accessToken.token),
);
return userCredential.user;
case FacebookLoginStatus.Cancel:
throw FirebaseAuthException(
code: 'ERROR_ABORTED_BY_USER',
message: 'Sign in aborted by user',
);
case FacebookLoginStatus.Error:
throw FirebaseAuthException(
code: 'ERROR_FACEBOOK_LOGIN_FAILED',
message: response.error.developerMessage,
);
default:
throw UnimplementedError();
}
}
@override
Future<void> signOut() async {
final facebookLogin = FacebookLogin();
await facebookLogin.logOut();
await _firebaseAuth.signOut();
}
}
这是我得到的错误:
Performing hot restart...
Syncing files to device AOSP on IA Emulator...
lib/services/auth.dart:68:32: Error: Getter not found: 'Success'.
case FacebookLoginStatus.Success:
^^^^^^^
lib/services/auth.dart:74:32: Error: Getter not found: 'Cancel'.
case FacebookLoginStatus.Cancel:
^^^^^^
lib/services/auth.dart:79:32: Error: Getter not found: 'Error'.
case FacebookLoginStatus.Error:
^^^^^
Restarted application in 278ms.
我尝试查看教程,但我发现我编写的代码没有任何区别,它在 Udemy 上,所以我无法将链接复制到这里给你。请告诉我如何处理,非常感谢,祝你有美好的一天
解决方案
将代码更改为
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter_login_facebook/flutter_login_facebook.dart';
abstract class AuthBase {
User get currentUser;
Stream<User> authStateChanges();
Future<User> signInWithFacebook();
Future<void> signOut();
}
class Auth implements AuthBase {
final _firebaseAuth = FirebaseAuth.instance;
@override
Stream<User> authStateChanges() => _firebaseAuth.authStateChanges();
@override
User get currentUser => _firebaseAuth.currentUser;
@override
Future<User> signInWithFacebook() async {
final fb = FacebookLogin();
final response = await fb.logIn(permissions: [
FacebookPermission.publicProfile,
FacebookPermission.email,
]);
switch (response.status) {
case FacebookLoginStatus.success:
final accessToken = response.accessToken;
final userCredential = await _firebaseAuth.signInWithCredential(
FacebookAuthProvider.credential(accessToken.token),
);
return userCredential.user;
case FacebookLoginStatus.cancel:
throw FirebaseAuthException(
code: 'ERROR_ABORTED_BY_USER',
message: 'Sign in aborted by user',
);
case FacebookLoginStatus.error:
throw FirebaseAuthException(
code: 'ERROR_FACEBOOK_LOGIN_FAILED',
message: response.error.developerMessage,
);
default:
throw UnimplementedError();
}
}
@override
Future<void> signOut() async {
final facebookLogin = FacebookLogin();
await facebookLogin.logOut();
await _firebaseAuth.signOut();
}
}
小写这段代码:
case FacebookLoginStatus.Success: to case FacebookLoginStatus.success:
case FacebookLoginStatus.Cancel: to case FacebookLoginStatus.cancel:
case FacebookLoginStatus.Error: to case FacebookLoginStatus.error:
推荐阅读
- python-3.x - 查询 DRF 中的多个外键关系
- c# - 使用 AutoMapper 如何忽略没有可访问 getter 的目标属性
- python - PostgreSQL 不可用:instance=None:None,timeout=30s
- terraform - 我正在运行命令“terraform init”但收到此错误,而在同一台机器的其他文件夹中,此命令工作正常
- node.js - CSS 选择器 - Puppeteer - Node.js - 如何获取元素类
- vba - 在 excel vba 中输出 UTF-8 文本文件
- go - 端口转发在我为练习而编写的代理服务器中不起作用
- android - 如何创建一个可用作启动器但仅适用于特定应用程序的 android 应用程序?
- javascript - 在 Ember js 中更新数组时,光滑的滑块不起作用
- python - 是否有python代码可以从数据框中的列中转移和总计/计数数据