signInWithFacebook method

Future<User?> signInWithFacebook()

Implementation

Future<User?> signInWithFacebook() async {
  try {
    // Attempt Facebook login
    final LoginResult result = await FacebookAuth.instance.login(
      loginBehavior: LoginBehavior.webOnly,
    );

    // Check if the login was successful
    if (result.status == LoginStatus.success) {
      // Check if accessToken is not null
      final accessToken = result.accessToken;
      if (accessToken != null) {
        final String token = accessToken.tokenString; // Use tokenString instead of token

        // Log the obtained token for debugging purposes
        print("Facebook Access Token: $token");

        // Create Facebook authentication credentials
        final AuthCredential credential = FacebookAuthProvider.credential(token);

        // Sign in to Firebase using Facebook credentials
        UserCredential userCredential = await _auth.signInWithCredential(credential);
        return userCredential.user;
      } else {
        print("Access token is null.");
      }
    } else {
      print("Facebook login failed. Status: ${result.status}");
      if (result.message != null) {
        print("Error message: ${result.message}");
      }
    }
  } catch (e) {
    // Log detailed error information
    print("Error during Facebook sign-in: ${e.toString()}");
  }
  return null;
}