From f166b6d25d2e27419dc2121d1f8781fb5edd3972 Mon Sep 17 00:00:00 2001 From: Guilherme Girotto Date: Fri, 26 Feb 2021 07:02:57 -0300 Subject: [PATCH 01/10] [google_sign_in] Updates google sign in to use parameterized clientId when available --- .../plugins/googlesignin/GoogleSignInPlugin.java | 12 ++++++++---- .../ios/Classes/FLTGoogleSignInPlugin.m | 2 +- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/packages/google_sign_in/google_sign_in/android/src/main/java/io/flutter/plugins/googlesignin/GoogleSignInPlugin.java b/packages/google_sign_in/google_sign_in/android/src/main/java/io/flutter/plugins/googlesignin/GoogleSignInPlugin.java index dab6f4c4db8e..248838c75968 100755 --- a/packages/google_sign_in/google_sign_in/android/src/main/java/io/flutter/plugins/googlesignin/GoogleSignInPlugin.java +++ b/packages/google_sign_in/google_sign_in/android/src/main/java/io/flutter/plugins/googlesignin/GoogleSignInPlugin.java @@ -136,7 +136,8 @@ public void onMethodCall(MethodCall call, Result result) { String signInOption = call.argument("signInOption"); List requestedScopes = call.argument("scopes"); String hostedDomain = call.argument("hostedDomain"); - delegate.init(result, signInOption, requestedScopes, hostedDomain); + String clientId = call.argument("clientId"); + delegate.init(result, signInOption, requestedScopes, hostedDomain, clientId); break; case METHOD_SIGN_IN_SILENTLY: @@ -188,7 +189,7 @@ public void onMethodCall(MethodCall call, Result result) { public interface IDelegate { /** Initializes this delegate so that it is ready to perform other operations. */ public void init( - Result result, String signInOption, List requestedScopes, String hostedDomain); + Result result, String signInOption, List requestedScopes, String hostedDomain, String clientId); /** * Returns the account information for the user who is signed in to this app. If no user is @@ -309,7 +310,7 @@ private void checkAndSetPendingOperation(String method, Result result, Object da */ @Override public void init( - Result result, String signInOption, List requestedScopes, String hostedDomain) { + Result result, String signInOption, List requestedScopes, String hostedDomain, String clientId) { try { GoogleSignInOptions.Builder optionsBuilder; @@ -334,7 +335,10 @@ public void init( context .getResources() .getIdentifier("default_web_client_id", "string", context.getPackageName()); - if (clientIdIdentifier != 0) { + if (!Strings.isNullOrEmpty(clientId)) { + optionsBuilder.requestIdToken(clientId); + optionsBuilder.requestServerAuthCode(clientId); + } else if (clientIdIdentifier != 0) { optionsBuilder.requestIdToken(context.getString(clientIdIdentifier)); optionsBuilder.requestServerAuthCode(context.getString(clientIdIdentifier)); } diff --git a/packages/google_sign_in/google_sign_in/ios/Classes/FLTGoogleSignInPlugin.m b/packages/google_sign_in/google_sign_in/ios/Classes/FLTGoogleSignInPlugin.m index f621d1e68312..e7b450c5bceb 100644 --- a/packages/google_sign_in/google_sign_in/ios/Classes/FLTGoogleSignInPlugin.m +++ b/packages/google_sign_in/google_sign_in/ios/Classes/FLTGoogleSignInPlugin.m @@ -77,7 +77,7 @@ - (void)handleMethodCall:(FlutterMethodCall *)call result:(FlutterResult)result ofType:@"plist"]; if (path) { NSMutableDictionary *plist = [[NSMutableDictionary alloc] initWithContentsOfFile:path]; - [GIDSignIn sharedInstance].clientID = plist[kClientIdKey]; + [GIDSignIn sharedInstance].clientID = [call.arguments objectForKey:@"clientId"] ?? plist[kClientIdKey]; [GIDSignIn sharedInstance].serverClientID = plist[kServerClientIdKey]; [GIDSignIn sharedInstance].scopes = call.arguments[@"scopes"]; [GIDSignIn sharedInstance].hostedDomain = call.arguments[@"hostedDomain"]; From 2283ec317392f31f1345aecb69d4920b010093ec Mon Sep 17 00:00:00 2001 From: Guilherme Girotto Date: Fri, 26 Feb 2021 07:25:24 -0300 Subject: [PATCH 02/10] Fixes wrong ternary operator --- .../google_sign_in/ios/Classes/FLTGoogleSignInPlugin.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/google_sign_in/google_sign_in/ios/Classes/FLTGoogleSignInPlugin.m b/packages/google_sign_in/google_sign_in/ios/Classes/FLTGoogleSignInPlugin.m index e7b450c5bceb..1a0fde0eeb9a 100644 --- a/packages/google_sign_in/google_sign_in/ios/Classes/FLTGoogleSignInPlugin.m +++ b/packages/google_sign_in/google_sign_in/ios/Classes/FLTGoogleSignInPlugin.m @@ -77,7 +77,7 @@ - (void)handleMethodCall:(FlutterMethodCall *)call result:(FlutterResult)result ofType:@"plist"]; if (path) { NSMutableDictionary *plist = [[NSMutableDictionary alloc] initWithContentsOfFile:path]; - [GIDSignIn sharedInstance].clientID = [call.arguments objectForKey:@"clientId"] ?? plist[kClientIdKey]; + [GIDSignIn sharedInstance].clientID = [call.arguments objectForKey:@"clientId"] ?: plist[kClientIdKey]; [GIDSignIn sharedInstance].serverClientID = plist[kServerClientIdKey]; [GIDSignIn sharedInstance].scopes = call.arguments[@"scopes"]; [GIDSignIn sharedInstance].hostedDomain = call.arguments[@"hostedDomain"]; From b0b71776ad06fc14f41959e0f239087835b90c32 Mon Sep 17 00:00:00 2001 From: Guilherme Girotto Date: Fri, 26 Feb 2021 07:48:13 -0300 Subject: [PATCH 03/10] Adds parameterized clientId tests --- .../test/google_sign_in_test.dart | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/packages/google_sign_in/google_sign_in/test/google_sign_in_test.dart b/packages/google_sign_in/google_sign_in/test/google_sign_in_test.dart index 79fa74ad1be1..4eb45a5dc38e 100755 --- a/packages/google_sign_in/google_sign_in/test/google_sign_in_test.dart +++ b/packages/google_sign_in/google_sign_in/test/google_sign_in_test.dart @@ -82,6 +82,25 @@ void main() { ); }); + test('signIn prioritize clientId parameter when available', () async { + final fakeClientId = 'fakeClientId'; + googleSignIn = GoogleSignIn(clientId: fakeClientId); + await googleSignIn.signIn(); + expect(googleSignIn.currentUser, isNotNull); + expect( + log, + [ + isMethodCall('init', arguments: { + 'signInOption': 'SignInOption.standard', + 'scopes': [], + 'hostedDomain': null, + 'clientId': fakeClientId, + }), + isMethodCall('signIn', arguments: null), + ], + ); + }); + test('signOut', () async { await googleSignIn.signOut(); expect(googleSignIn.currentUser, isNull); From 175dee42ae7f66cc7e0dd8a5f35aad6d04f8c6e0 Mon Sep 17 00:00:00 2001 From: Guilherme Girotto Date: Thu, 4 Mar 2021 16:17:08 -0300 Subject: [PATCH 04/10] Bumps pubspec minor version and updates CHANGELOG --- packages/google_sign_in/google_sign_in/CHANGELOG.md | 4 ++++ packages/google_sign_in/google_sign_in/pubspec.yaml | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/google_sign_in/google_sign_in/CHANGELOG.md b/packages/google_sign_in/google_sign_in/CHANGELOG.md index 57d1c9be3743..3eb7c6be8d91 100644 --- a/packages/google_sign_in/google_sign_in/CHANGELOG.md +++ b/packages/google_sign_in/google_sign_in/CHANGELOG.md @@ -1,3 +1,7 @@ +## 5.0.1 + +* Update platforms `init` function to prioritize `clientId` property when available. + ## 5.0.0 * Migrate to null safety. diff --git a/packages/google_sign_in/google_sign_in/pubspec.yaml b/packages/google_sign_in/google_sign_in/pubspec.yaml index 06fa12c0f4c0..2299ea90ffd7 100644 --- a/packages/google_sign_in/google_sign_in/pubspec.yaml +++ b/packages/google_sign_in/google_sign_in/pubspec.yaml @@ -2,7 +2,7 @@ name: google_sign_in description: Flutter plugin for Google Sign-In, a secure authentication system for signing in with a Google account on Android and iOS. homepage: https://github.com/flutter/plugins/tree/master/packages/google_sign_in/google_sign_in -version: 5.0.0 +version: 5.0.1 flutter: plugin: From 17b25689c688e616b53beb0f2b5db6818c8fdea0 Mon Sep 17 00:00:00 2001 From: Guilherme Girotto Date: Fri, 5 Mar 2021 16:05:21 -0300 Subject: [PATCH 05/10] Bumps `google_sign_in_plateform_interface' to match the newest version and updates CHANGELOG --- packages/google_sign_in/google_sign_in/CHANGELOG.md | 3 ++- packages/google_sign_in/google_sign_in/pubspec.yaml | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/google_sign_in/google_sign_in/CHANGELOG.md b/packages/google_sign_in/google_sign_in/CHANGELOG.md index 3eb7c6be8d91..1e241be600ac 100644 --- a/packages/google_sign_in/google_sign_in/CHANGELOG.md +++ b/packages/google_sign_in/google_sign_in/CHANGELOG.md @@ -1,6 +1,7 @@ ## 5.0.1 -* Update platforms `init` function to prioritize `clientId` property when available. +* Update platforms `init` function to prioritize `clientId` property when available; +* Updates `google_sign_in_platform_interface` to match the newest version were `clientId` is being send as parameter. ## 5.0.0 diff --git a/packages/google_sign_in/google_sign_in/pubspec.yaml b/packages/google_sign_in/google_sign_in/pubspec.yaml index 2299ea90ffd7..23f2588c8f90 100644 --- a/packages/google_sign_in/google_sign_in/pubspec.yaml +++ b/packages/google_sign_in/google_sign_in/pubspec.yaml @@ -16,7 +16,7 @@ flutter: default_package: google_sign_in_web dependencies: - google_sign_in_platform_interface: ^2.0.0 + google_sign_in_platform_interface: ^2.0.1 google_sign_in_web: ^0.10.0 flutter: sdk: flutter From fc7926b20d0d3c2cf1b9a54e2badbba7fb961498 Mon Sep 17 00:00:00 2001 From: Guilherme Girotto Date: Fri, 5 Mar 2021 16:05:51 -0300 Subject: [PATCH 06/10] Adds verification to avoid nullable `clientId` parameter --- .../google_sign_in/ios/Classes/FLTGoogleSignInPlugin.m | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/google_sign_in/google_sign_in/ios/Classes/FLTGoogleSignInPlugin.m b/packages/google_sign_in/google_sign_in/ios/Classes/FLTGoogleSignInPlugin.m index 1a0fde0eeb9a..59854a11fe17 100644 --- a/packages/google_sign_in/google_sign_in/ios/Classes/FLTGoogleSignInPlugin.m +++ b/packages/google_sign_in/google_sign_in/ios/Classes/FLTGoogleSignInPlugin.m @@ -77,7 +77,14 @@ - (void)handleMethodCall:(FlutterMethodCall *)call result:(FlutterResult)result ofType:@"plist"]; if (path) { NSMutableDictionary *plist = [[NSMutableDictionary alloc] initWithContentsOfFile:path]; - [GIDSignIn sharedInstance].clientID = [call.arguments objectForKey:@"clientId"] ?: plist[kClientIdKey]; + BOOL hasDynamicClientId = [[call.arguments objectForKey:@"clientId"] isKindOfClass:NSString.class]; + + if (hasDynamicClientId) { + [GIDSignIn sharedInstance].clientID = [call.arguments objectForKey:@"clientId"]; + } else { + [GIDSignIn sharedInstance].clientID = plist[kClientIdKey]; + } + [GIDSignIn sharedInstance].serverClientID = plist[kServerClientIdKey]; [GIDSignIn sharedInstance].scopes = call.arguments[@"scopes"]; [GIDSignIn sharedInstance].hostedDomain = call.arguments[@"hostedDomain"]; From 6d59c6f76807c7b875241730cdf172b2cd39d5a1 Mon Sep 17 00:00:00 2001 From: Guilherme Girotto Date: Mon, 8 Mar 2021 18:30:23 -0300 Subject: [PATCH 07/10] Updates clientId extraction and updates example/main.dart adding optional clientId --- packages/google_sign_in/google_sign_in/example/lib/main.dart | 2 ++ .../google_sign_in/ios/Classes/FLTGoogleSignInPlugin.m | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/google_sign_in/google_sign_in/example/lib/main.dart b/packages/google_sign_in/google_sign_in/example/lib/main.dart index e003225af5cc..c87063297373 100755 --- a/packages/google_sign_in/google_sign_in/example/lib/main.dart +++ b/packages/google_sign_in/google_sign_in/example/lib/main.dart @@ -12,6 +12,8 @@ import 'package:flutter/material.dart'; import 'package:google_sign_in/google_sign_in.dart'; GoogleSignIn _googleSignIn = GoogleSignIn( + // Optional clientId + // clientId: '479882132969-9i9aqik3jfjd7qhci1nqf0bm2g71rm1u.apps.googleusercontent.com', scopes: [ 'email', 'https://www.googleapis.com/auth/contacts.readonly', diff --git a/packages/google_sign_in/google_sign_in/ios/Classes/FLTGoogleSignInPlugin.m b/packages/google_sign_in/google_sign_in/ios/Classes/FLTGoogleSignInPlugin.m index 59854a11fe17..9dd1e1441245 100644 --- a/packages/google_sign_in/google_sign_in/ios/Classes/FLTGoogleSignInPlugin.m +++ b/packages/google_sign_in/google_sign_in/ios/Classes/FLTGoogleSignInPlugin.m @@ -77,10 +77,10 @@ - (void)handleMethodCall:(FlutterMethodCall *)call result:(FlutterResult)result ofType:@"plist"]; if (path) { NSMutableDictionary *plist = [[NSMutableDictionary alloc] initWithContentsOfFile:path]; - BOOL hasDynamicClientId = [[call.arguments objectForKey:@"clientId"] isKindOfClass:NSString.class]; + BOOL hasDynamicClientId = [[call.arguments valueForKey:@"clientId"] isKindOfClass:[NSString class]]; if (hasDynamicClientId) { - [GIDSignIn sharedInstance].clientID = [call.arguments objectForKey:@"clientId"]; + [GIDSignIn sharedInstance].clientID = [call.arguments valueForKey:@"clientId"]; } else { [GIDSignIn sharedInstance].clientID = plist[kClientIdKey]; } From 03805a0215bccb5fd6b5774cb5c407831df4745e Mon Sep 17 00:00:00 2001 From: Guilherme Girotto Date: Mon, 8 Mar 2021 18:32:57 -0300 Subject: [PATCH 08/10] Updates CHANGELOG --- packages/google_sign_in/google_sign_in/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/google_sign_in/google_sign_in/CHANGELOG.md b/packages/google_sign_in/google_sign_in/CHANGELOG.md index 1e241be600ac..429b07b47472 100644 --- a/packages/google_sign_in/google_sign_in/CHANGELOG.md +++ b/packages/google_sign_in/google_sign_in/CHANGELOG.md @@ -1,7 +1,7 @@ ## 5.0.1 * Update platforms `init` function to prioritize `clientId` property when available; -* Updates `google_sign_in_platform_interface` to match the newest version were `clientId` is being send as parameter. +* Updates `google_sign_in_platform_interface` version. ## 5.0.0 From ae9dca0b4a9a9b8665a9d1a1422c641ddd7e4729 Mon Sep 17 00:00:00 2001 From: Guilherme Girotto Date: Fri, 12 Mar 2021 07:53:24 -0300 Subject: [PATCH 09/10] Fixes GoogleSignInPlugin file format --- .../plugins/googlesignin/GoogleSignInPlugin.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/packages/google_sign_in/google_sign_in/android/src/main/java/io/flutter/plugins/googlesignin/GoogleSignInPlugin.java b/packages/google_sign_in/google_sign_in/android/src/main/java/io/flutter/plugins/googlesignin/GoogleSignInPlugin.java index 248838c75968..44a4caf1d56d 100755 --- a/packages/google_sign_in/google_sign_in/android/src/main/java/io/flutter/plugins/googlesignin/GoogleSignInPlugin.java +++ b/packages/google_sign_in/google_sign_in/android/src/main/java/io/flutter/plugins/googlesignin/GoogleSignInPlugin.java @@ -189,7 +189,11 @@ public void onMethodCall(MethodCall call, Result result) { public interface IDelegate { /** Initializes this delegate so that it is ready to perform other operations. */ public void init( - Result result, String signInOption, List requestedScopes, String hostedDomain, String clientId); + Result result, + String signInOption, + List requestedScopes, + String hostedDomain, + String clientId); /** * Returns the account information for the user who is signed in to this app. If no user is @@ -310,7 +314,11 @@ private void checkAndSetPendingOperation(String method, Result result, Object da */ @Override public void init( - Result result, String signInOption, List requestedScopes, String hostedDomain, String clientId) { + Result result, + String signInOption, + List requestedScopes, + String hostedDomain, + String clientId) { try { GoogleSignInOptions.Builder optionsBuilder; From 9cf211317f54022cffa69249fac0f43262bc4805 Mon Sep 17 00:00:00 2001 From: Guilherme Girotto Date: Fri, 12 Mar 2021 07:58:52 -0300 Subject: [PATCH 10/10] Fixes FLTGoogleSignIn formatting --- .../google_sign_in/ios/Classes/FLTGoogleSignInPlugin.m | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/google_sign_in/google_sign_in/ios/Classes/FLTGoogleSignInPlugin.m b/packages/google_sign_in/google_sign_in/ios/Classes/FLTGoogleSignInPlugin.m index 9dd1e1441245..94b7fc569314 100644 --- a/packages/google_sign_in/google_sign_in/ios/Classes/FLTGoogleSignInPlugin.m +++ b/packages/google_sign_in/google_sign_in/ios/Classes/FLTGoogleSignInPlugin.m @@ -77,14 +77,15 @@ - (void)handleMethodCall:(FlutterMethodCall *)call result:(FlutterResult)result ofType:@"plist"]; if (path) { NSMutableDictionary *plist = [[NSMutableDictionary alloc] initWithContentsOfFile:path]; - BOOL hasDynamicClientId = [[call.arguments valueForKey:@"clientId"] isKindOfClass:[NSString class]]; + BOOL hasDynamicClientId = + [[call.arguments valueForKey:@"clientId"] isKindOfClass:[NSString class]]; if (hasDynamicClientId) { [GIDSignIn sharedInstance].clientID = [call.arguments valueForKey:@"clientId"]; } else { [GIDSignIn sharedInstance].clientID = plist[kClientIdKey]; } - + [GIDSignIn sharedInstance].serverClientID = plist[kServerClientIdKey]; [GIDSignIn sharedInstance].scopes = call.arguments[@"scopes"]; [GIDSignIn sharedInstance].hostedDomain = call.arguments[@"hostedDomain"];