From 3f76b53f375f4398652abfa7c9236571ee0bd87f Mon Sep 17 00:00:00 2001 From: Guillaume Bernos Date: Mon, 3 Oct 2022 11:09:35 +0200 Subject: [PATCH] feat(auth, ios): fix an iOS crash when using Sign In With Apple due to invalid return of nil instead of NSNull (#9644) --- .../ios/Classes/FLTFirebaseAuthPlugin.m | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/packages/firebase_auth/firebase_auth/ios/Classes/FLTFirebaseAuthPlugin.m b/packages/firebase_auth/firebase_auth/ios/Classes/FLTFirebaseAuthPlugin.m index 5d8bbdf7adf7..c1b7ed284b62 100644 --- a/packages/firebase_auth/firebase_auth/ios/Classes/FLTFirebaseAuthPlugin.m +++ b/packages/firebase_auth/firebase_auth/ios/Classes/FLTFirebaseAuthPlugin.m @@ -1676,15 +1676,23 @@ + (id)getNSDictionaryFromAuthCredential:(FIRAuthCredential *)authCredential { return [NSNull null]; } + NSString *accessToken = nil; + if ([authCredential isKindOfClass:[FIROAuthCredential class]]) { + if (((FIROAuthCredential *)authCredential).accessToken != nil) { + accessToken = ((FIROAuthCredential *)authCredential).accessToken; + } else if (((FIROAuthCredential *)authCredential).IDToken != nil) { + // For Sign In With Apple, the token is stored in IDToken + accessToken = ((FIROAuthCredential *)authCredential).IDToken; + } + } + return @{ kArgumentProviderId : authCredential.provider, // Note: "signInMethod" does not exist on iOS SDK, so using provider // instead. kArgumentSignInMethod : authCredential.provider, kArgumentToken : @([authCredential hash]), - kArgumentAccessToken : ([authCredential isKindOfClass:[FIROAuthCredential class]]) - ? ((FIROAuthCredential *)authCredential).accessToken - : nil, + kArgumentAccessToken : accessToken ?: [NSNull null], }; }