问题描述
我正在使用 Flutter_facebook_auth 3.5.0
插件让用户能够使用他们的 Facebook 帐户登录我的应用程序。
一切都按预期进行。但是当我注销并再次尝试登录时,它不会提示我输入凭据并直接登录。
我希望它提示用户输入他们的 Facebook 帐户凭据,然后仅在身份验证成功时登录应用程序。
Future<void> signInWithFacebook(BuildContext context) async {
User? firebaseUser;
LoginResult response = await FacebookAuth.instance.login();
AuthCredential facebookCredential = FacebookAuthProvider.credential(response.accesstoken!.token);
final UserCredential userCredential = await FirebaseAuth.instance.signInWithCredential(facebookCredential);
firebaseUser = userCredential.user;
switch (response.status) {
case LoginStatus.success:
final userData = await FacebookAuth.instance.getUserData();
facebookUserData = userData;
firestoreInstance.collection("users").doc(firebaseUser!.uid).set({
"userID": firebaseUser.uid,"name": facebookUserData["name"],"photo": facebookUserData["picture"]["data"]["url"],"emailAddress": facebookUserData["email"],"signUpMethod": "facebook","accountCreatedOn": Timestamp.Now(),"receiveOffers": true,"isAdmin": false,"isAuth": false,"isSubscribed": false,});
Navigator.of(context).pushReplacement(ScaledAnimationPageRoute(HomePage()));
break;
case LoginStatus.cancelled:
print("Facebook: User cancelled login");
break;
case LoginStatus.Failed:
print("Facebook: Login error!");
break;
case LoginStatus.operationInProgress:
// Todo: Handle this case.
break;
}
}
以下是注销方法:
await FacebookAuth.instance.logout();
facebookUserData = {};
await authInstance.signOut().then((value) => Navigator.of(context).pushReplacement(ScaledAnimationPageRoute(SignIn())));
我认为 AuthCredential
需要在用户注销时清除。我不知道该怎么做。
我是 Flutter 的新手,谁能帮我解决这个问题。提前致谢。
解决方法
flutter_facebook_auth 3.5.0
here 的 github 项目已经存在问题。
它看起来像是对 Facebook 的模仿,而不是插件本身。
,改用名为 flutter_facebook_login 的包...我正在使用这个包并且它运行良好