How to delete user from firebase auth in case of Apple in Flutter?

Viewed 859

I am working on an app which requires to delete user from firebase auth. Till now I have been able to implement this functionality when the provider is Google. But I am unable to do the same for Apple.

Here is the function to delete a user:

deleteAccount() async {
  setState(() {
    _deleteAccountLoader = true;
  });
  FirestoreFunctions _firestoreFunctions = FirestoreFunctions();
  final FirebaseUser currentUser = await _firebaseAuth.currentUser();
  await _firestoreFunctions.deleteUser(
    email: bloc.getUser().email,
  );
  SharedPreferences prefs = await SharedPreferences.getInstance();
  try {
    String accountType = prefs.getString('account_type');
    String accessToken = prefs.getString('accessToken') ?? '';
    String idToken = prefs.getString('idToken') ?? '';
    AuthCredential credential;
    switch (accountType) {
      case 'google':
        credential = GoogleAuthProvider.getCredential(
          accessToken: accessToken,
          idToken: idToken,
        );
        break;
      case 'apple':
        final OAuthProvider oAuthProvider =
            new OAuthProvider(providerId: "apple.com");
        credential = oAuthProvider.getCredential(
          idToken: idToken,
          accessToken: accessToken,
        );
        break;
      case 'facebook':
        credential = FacebookAuthProvider.getCredential(
          accessToken: accessToken,
        );
        break;
    }
    await currentUser.reauthenticateWithCredential(credential);
    await currentUser.delete();
  } catch (error) {
    print('Unable to delete');
    print(error.toString());
  }
  await _logOut();
  prefs.remove("email");
  setState(() {
    _deleteAccountLoader = false;
  });
}

But I get this error when I try to delete an apple account

flutter: Unable to delete

flutter: PlatformException(ERROR_MISSING_OR_INVALID_NONCE, Duplicate credential received. Please try again with a new credential., null)

But I need to reauthenticate the user as I was getting this error without it.

Unhandled Exception: PlatformException(ERROR_REQUIRES_RECENT_LOGIN, This operation is sensitive and requires recent authentication. Log in again before retrying this request., null)

These are the packages that I am using:

firebase_auth: ^0.15.3
apple_sign_in: ^0.1.0

Any help would be great. Thanks for your time!

0 Answers
Related