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!