flutter - 如何注销Facebook帐户以进入另一个帐户

标签 flutter dart firebase-authentication facebook-login flutter-test

我正在使用 flutter facebook 身份验证。

当我第一次登录时需要输入电子邮件和密码,然后我注销并再次登录然后它没有要求输入电子邮件和密码。

当我第一次登录时需要输入电子邮件和密码,然后我注销并再次登录然后它没有要求输入电子邮件和密码。

看起来像 enter image description here

这是我的 facebook 登录功能


import 'package:cwc/ApiManager/preference.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter_facebook_auth/flutter_facebook_auth.dart';
final FirebaseAuth _auth = FirebaseAuth.instance;

// final GoogleSignIn googleSignIn = GoogleSignIn();

String? fbName;
String? fbEmail;
String? fbImageUrl;

Future<String?> signInWithFacebook() async {
  // Trigger the sign-in flow
  final LoginResult loginResult = await FacebookAuth.instance.login();
  // final GoogleSignInAccount? googleSignInAccount = await googleSignIn.signIn();
 var a= await loginResult.message;
  // Create a credential from the access token
  final OAuthCredential facebookAuthCredential = FacebookAuthProvider.credential(loginResult.accessToken!.token);
  print("facebookAuthCredential22 ${facebookAuthCredential.token}");
  print("facebookAuthCredential33 ${facebookAuthCredential.accessToken}");
  print("facebookAuthCredential44 ${facebookAuthCredential.rawNonce}");
  // Once signed in, return the UserCredential
  final UserCredential authResult =
  await _auth.signInWithCredential(facebookAuthCredential);
  final User? users = authResult.user;
  final UserInfo? user = users!.providerData[0];
  print("facebookAuthCredential11 $user");
  // return FirebaseAuth.instance.signInWithCredential(facebookAuthCredential);

  if (user != null) {
    // Checking if email and name is null
    // assert(user.email != null);
    assert(user.displayName != null);
    assert(user.photoURL != null);

    Preferences.saveData("socialName", user.displayName.toString());
    Preferences.saveData("socialEmail", user.email.toString());
    Preferences.saveData("socialImage", user.photoURL.toString());

    // Only taking the first part of the name, i.e., First Name
    // if (googleName!.contains(" ")) {
    //   googleName = googleName!.substring(0, googleName!.indexOf(" "));
    // }

    assert(!users.isAnonymous);
    assert(await users.getIdToken() != null);

    final User? currentUser = _auth.currentUser;
    assert(users.uid == currentUser!.uid);

    print('signInWithFacebook succeeded: $user');

    return '$user';
  }

  return null;
}

Future<void> signOutWithFacebook() async {
  await FacebookAuth.instance.logOut();
  print("User Signed Out");
}


最佳答案

您还需要通过调用以下方式显式退出 Facebook:

FacebookAuth.instance.logOut()

另见:

关于flutter - 如何注销Facebook帐户以进入另一个帐户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70705720/

相关文章:

android - 使用 Firebase 将用户保留在 App Reinstall 上

Firebase facebook 登录照片 url 签名已过期

javascript - Cloud Firestore 文档 .get() 和 .where() 函数无法识别

flutter - Flutter:区分小部件参数= null和未设置的参数

android - 如何在 Flutter 中读取音频扩展并显示在 ListView 中?

flutter - 键盘覆盖文本字段,Flutter 中的 focusNode 不起作用

android - 为什么 futureBuilder 有时会卡在进度加载器上?

colors - 如何在我的框中设置默认颜色并根据输入改变颜色?

ios - Codemagic IOS 构建需要很长时间才能完成

dart - 如何在 Dart 中获取选定的文本或内部 html