diff --git a/packages/firebase_auth/CHANGELOG.md b/packages/firebase_auth/CHANGELOG.md index 134ac8763d1f..6b76e208b3df 100644 --- a/packages/firebase_auth/CHANGELOG.md +++ b/packages/firebase_auth/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.14.0+9 + +* Fix the behavior of `getIdToken` to use the `refresh` parameter instead of always refreshing. + ## 0.14.0+8 * Updated README instructions for contributing for consistency with other Flutterfire plugins. diff --git a/packages/firebase_auth/example/test/firebase_auth.dart b/packages/firebase_auth/example/test/firebase_auth.dart index 52545e1e72b7..cbbe7d4f23bf 100644 --- a/packages/firebase_auth/example/test/firebase_auth.dart +++ b/packages/firebase_auth/example/test/firebase_auth.dart @@ -40,6 +40,7 @@ void main() { expect(user.metadata.creationTime.isAfter(DateTime(2018, 1, 1)), isTrue); expect(user.metadata.creationTime.isBefore(DateTime.now()), isTrue); final IdTokenResult tokenResult = await user.getIdToken(); + final String originalToken = tokenResult.token; expect(tokenResult.token, isNotNull); expect(tokenResult.expirationTime.isAfter(DateTime.now()), isTrue); expect(tokenResult.authTime, isNotNull); @@ -53,6 +54,10 @@ void main() { expect(tokenResult.claims['provider_id'], 'anonymous'); expect(tokenResult.claims['firebase']['sign_in_provider'], 'anonymous'); expect(tokenResult.claims['user_id'], user.uid); + // Verify that token will be the same after another getIdToken call with refresh = false option + final IdTokenResult newTokenResultWithoutRefresh = + await user.getIdToken(refresh: false); + expect(originalToken, newTokenResultWithoutRefresh.token); await auth.signOut(); final FirebaseUser user2 = (await auth.signInAnonymously()).user; expect(user2.uid, isNot(equals(user.uid))); diff --git a/packages/firebase_auth/ios/Classes/FirebaseAuthPlugin.m b/packages/firebase_auth/ios/Classes/FirebaseAuthPlugin.m index 0700f7489d5f..927a8692a1a1 100644 --- a/packages/firebase_auth/ios/Classes/FirebaseAuthPlugin.m +++ b/packages/firebase_auth/ios/Classes/FirebaseAuthPlugin.m @@ -205,7 +205,7 @@ - (void)handleMethodCall:(FlutterMethodCall *)call result:(FlutterResult)result } } else if ([@"getIdToken" isEqualToString:call.method]) { NSDictionary *args = call.arguments; - BOOL refresh = [args objectForKey:@"refresh"]; + BOOL refresh = [[args objectForKey:@"refresh"] boolValue]; [[self getAuth:call.arguments].currentUser getIDTokenResultForcingRefresh:refresh completion:^(FIRAuthTokenResult *_Nullable tokenResult, diff --git a/packages/firebase_auth/pubspec.yaml b/packages/firebase_auth/pubspec.yaml index 398d4238c312..8d005e860373 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/FirebaseExtended/flutterfire/tree/master/packages/firebase_auth -version: 0.14.0+8 +version: 0.14.0+9 flutter: plugin: