diff --git a/packages/firebase_auth/CHANGELOG.md b/packages/firebase_auth/CHANGELOG.md index 567fe3fe4d8c..43ab971b889d 100644 --- a/packages/firebase_auth/CHANGELOG.md +++ b/packages/firebase_auth/CHANGELOG.md @@ -1,3 +1,8 @@ +## 0.12.0+1 + +* Fixes iOS sign-in exceptions when `additionalUserInfo` is `nil` or has `nil` fields. +* Additional integration testing. + ## 0.12.0 * Added new `AuthResult` and `AdditionalUserInfo` classes. diff --git a/packages/firebase_auth/example/test/firebase_auth.dart b/packages/firebase_auth/example/test/firebase_auth.dart index 5a76e4c05998..a2bd8e8dac22 100644 --- a/packages/firebase_auth/example/test/firebase_auth.dart +++ b/packages/firebase_auth/example/test/firebase_auth.dart @@ -15,6 +15,10 @@ void main() { group('$FirebaseAuth', () { final FirebaseAuth auth = FirebaseAuth.instance; + setUp(() async { + await auth.signOut(); + }); + test('signInAnonymously', () async { final AuthResult result = await auth.signInAnonymously(); final FirebaseUser user = result.user; @@ -24,7 +28,12 @@ void main() { expect(additionalUserInfo.username, isNull); expect(additionalUserInfo.isNewUser, isNotNull); expect(additionalUserInfo.profile, isNull); - expect(additionalUserInfo.providerId, isNull); + // TODO(jackson): Fix behavior to be consistent across platforms + // https://github.com/firebase/firebase-ios-sdk/issues/3450 + expect( + additionalUserInfo.providerId == null || + additionalUserInfo.providerId == 'password', + isTrue); }); test('isSignInWithEmailLink', () async { diff --git a/packages/firebase_auth/ios/Classes/FirebaseAuthPlugin.m b/packages/firebase_auth/ios/Classes/FirebaseAuthPlugin.m index 83c18c8dd5fb..5225d486d468 100644 --- a/packages/firebase_auth/ios/Classes/FirebaseAuthPlugin.m +++ b/packages/firebase_auth/ios/Classes/FirebaseAuthPlugin.m @@ -374,12 +374,13 @@ - (void)sendResult:(FlutterResult)result [self sendResult:result forObject:@{ @"user" : (user != nil ? [self dictionaryFromUser:user] : nil), - @"additionalUserInfo" : @{ + @"additionalUserInfo" : additionalUserInfo ? @{ @"isNewUser" : [NSNumber numberWithBool:additionalUserInfo.isNewUser], - @"username" : additionalUserInfo.username, - @"providerId" : additionalUserInfo.providerID, - @"profile" : additionalUserInfo.profile, + @"username" : additionalUserInfo.username ?: [NSNull null], + @"providerId" : additionalUserInfo.providerID ?: [NSNull null], + @"profile" : additionalUserInfo.profile ?: [NSNull null], } + : [NSNull null], } error:error]; } diff --git a/packages/firebase_auth/pubspec.yaml b/packages/firebase_auth/pubspec.yaml index fa57e4707dbc..f3fd0520aff1 100755 --- a/packages/firebase_auth/pubspec.yaml +++ b/packages/firebase_auth/pubspec.yaml @@ -4,7 +4,7 @@ description: Flutter plugin for Firebase Auth, enabling Android and iOS like Google, Facebook and Twitter. author: Flutter Team homepage: https://github.com/flutter/plugins/tree/master/packages/firebase_auth -version: "0.12.0" +version: "0.12.0+1" flutter: plugin: