3

I am using flutter facebook auth.

When I login for the first time came to enter email and password after that I logout and went to login again then it did not ask for email and password.

When I login for the first time came to enter email and password after that I logout and went to login again then it did not ask for email and password.

and its looks like it enter image description here

this is my facebook login functionality


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");
}


Frank van Puffelen
  • 565,676
  • 79
  • 828
  • 807
Deepak
  • 1,664
  • 3
  • 19
  • 52

2 Answers2

2

You'll also need to sign out of Facebook explicitly by calling:

FacebookAuth.instance.logOut()

Also see:

Frank van Puffelen
  • 565,676
  • 79
  • 828
  • 807
0

You can call the setCustomParameters() method on FacebookAuthProvider.

And pass the consent parameter like so:

_facebookAuth.setCustomParameters({"consent":"select_account"});

You can read about the parameters you can pass to the consent on this answer

Mayank
  • 1,595
  • 1
  • 11
  • 26