From 2c6f55e1ebc1b7abbd8a22cd2b863fbc210d3112 Mon Sep 17 00:00:00 2001 From: Pavel Shapovalov Date: Thu, 22 Jul 2021 10:15:28 +0300 Subject: [PATCH 1/9] reuse serverAuthCode obtained on login --- .../google_sign_in/google_sign_in/CHANGELOG.md | 4 ++++ .../google_sign_in/lib/google_sign_in.dart | 14 +++++++++++--- .../google_sign_in/google_sign_in/pubspec.yaml | 4 ++-- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/packages/google_sign_in/google_sign_in/CHANGELOG.md b/packages/google_sign_in/google_sign_in/CHANGELOG.md index 186a1d39a223..745ecfdd994b 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.6 + +* Re-use server auth code obtained on login. + ## 5.0.5 * Add iOS unit and UI integration test targets. diff --git a/packages/google_sign_in/google_sign_in/lib/google_sign_in.dart b/packages/google_sign_in/google_sign_in/lib/google_sign_in.dart index b45b09c2d7a7..aa69c9cfbf0a 100644 --- a/packages/google_sign_in/google_sign_in/lib/google_sign_in.dart +++ b/packages/google_sign_in/google_sign_in/lib/google_sign_in.dart @@ -44,7 +44,8 @@ class GoogleSignInAccount implements GoogleIdentity { email = data.email, id = data.id, photoUrl = data.photoUrl, - _idToken = data.idToken { + _idToken = data.idToken, + _serverAuthCode = data.serverAuthCode { assert(id != null); } @@ -69,6 +70,7 @@ class GoogleSignInAccount implements GoogleIdentity { final String? photoUrl; final String? _idToken; + final String? _serverAuthCode; final GoogleSignIn _googleSignIn; /// Retrieve [GoogleSignInAuthentication] for this account. @@ -97,6 +99,10 @@ class GoogleSignInAccount implements GoogleIdentity { if (response.idToken == null) { response.idToken = _idToken; } + // re-use auth code obtained on login. + if (response.serverAuthCode == null) { + response.serverAuthCode = _serverAuthCode; + } return GoogleSignInAuthentication._(response); } @@ -132,11 +138,13 @@ class GoogleSignInAccount implements GoogleIdentity { email == otherAccount.email && id == otherAccount.id && photoUrl == otherAccount.photoUrl && - _idToken == otherAccount._idToken; + _idToken == otherAccount._idToken && + _serverAuthCode == otherAccount._serverAuthCode; } @override - int get hashCode => hashValues(displayName, email, id, photoUrl, _idToken); + int get hashCode => + hashValues(displayName, email, id, photoUrl, _idToken, _serverAuthCode); @override String toString() { diff --git a/packages/google_sign_in/google_sign_in/pubspec.yaml b/packages/google_sign_in/google_sign_in/pubspec.yaml index 14f7d8901301..97d8e9a46a57 100644 --- a/packages/google_sign_in/google_sign_in/pubspec.yaml +++ b/packages/google_sign_in/google_sign_in/pubspec.yaml @@ -3,7 +3,7 @@ description: Flutter plugin for Google Sign-In, a secure authentication system for signing in with a Google account on Android and iOS. repository: https://github.com/flutter/plugins/tree/master/packages/google_sign_in/google_sign_in issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+google_sign_in%22 -version: 5.0.5 +version: 5.0.6 environment: sdk: ">=2.12.0 <3.0.0" @@ -23,7 +23,7 @@ flutter: dependencies: flutter: sdk: flutter - google_sign_in_platform_interface: ^2.0.1 + google_sign_in_platform_interface: ^2.0.2 google_sign_in_web: ^0.10.0 meta: ^1.3.0 From 82918385a38295ca4dffa02784b4b5810beb75a2 Mon Sep 17 00:00:00 2001 From: Pavel Shapovalov Date: Fri, 23 Jul 2021 13:01:48 +0300 Subject: [PATCH 2/9] tests fix --- .../google_sign_in/test/google_sign_in_test.dart | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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 f642bcd2eaf8..d7e78b0a7fdd 100644 --- 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 @@ -23,6 +23,7 @@ void main() { "id": "8162538176523816253123", "photoUrl": "https://lh5.googleusercontent.com/photo.jpg", "displayName": "John Doe", + "serverAuthCode": "789" }; const Map kDefaultResponses = { @@ -36,7 +37,7 @@ void main() { 'getTokens': { 'idToken': '123', 'accessToken': '456', - 'serverAuthCode': '789', + 'serverAuthCode': null, }, }; From c97830fe0e2934e53cb74e1676a339a1dd3fbd5b Mon Sep 17 00:00:00 2001 From: Pavel Shapovalov Date: Fri, 8 Oct 2021 11:35:00 +0300 Subject: [PATCH 3/9] move serverAuthCode to GoogleSignInAccount --- .../google_sign_in/CHANGELOG.md | 4 ++-- .../google_sign_in/lib/google_sign_in.dart | 23 ++++++++----------- .../google_sign_in/lib/src/common.dart | 3 +++ .../google_sign_in/lib/testing.dart | 5 ++++ .../google_sign_in/pubspec.yaml | 4 ++-- .../test/google_sign_in_test.dart | 18 ++++++--------- 6 files changed, 29 insertions(+), 28 deletions(-) diff --git a/packages/google_sign_in/google_sign_in/CHANGELOG.md b/packages/google_sign_in/google_sign_in/CHANGELOG.md index 668207f03f11..906093d02af4 100644 --- a/packages/google_sign_in/google_sign_in/CHANGELOG.md +++ b/packages/google_sign_in/google_sign_in/CHANGELOG.md @@ -1,6 +1,6 @@ -## 5.1.2 +## 6.0.0 -* Re-use server auth code obtained on login. +* **Breaking change**. Move `serverAuthCode` from `GoogleSignInAuthentication` to `GoogleSignInAccount`. ## 5.1.1 diff --git a/packages/google_sign_in/google_sign_in/lib/google_sign_in.dart b/packages/google_sign_in/google_sign_in/lib/google_sign_in.dart index 97f9bfabd19b..b41651b8e526 100644 --- a/packages/google_sign_in/google_sign_in/lib/google_sign_in.dart +++ b/packages/google_sign_in/google_sign_in/lib/google_sign_in.dart @@ -27,9 +27,6 @@ class GoogleSignInAuthentication { /// The OAuth2 access token to access Google services. String? get accessToken => _data.accessToken; - /// Server auth code used to access Google Login - String? get serverAuthCode => _data.serverAuthCode; - @override String toString() => 'GoogleSignInAuthentication:$_data'; } @@ -44,8 +41,8 @@ class GoogleSignInAccount implements GoogleIdentity { email = data.email, id = data.id, photoUrl = data.photoUrl, - _idToken = data.idToken, - _serverAuthCode = data.serverAuthCode { + serverAuthCode = data.serverAuthCode, + _idToken = data.idToken { assert(id != null); } @@ -69,8 +66,10 @@ class GoogleSignInAccount implements GoogleIdentity { @override final String? photoUrl; + @override + final String? serverAuthCode; + final String? _idToken; - final String? _serverAuthCode; final GoogleSignIn _googleSignIn; /// Retrieve [GoogleSignInAuthentication] for this account. @@ -99,10 +98,7 @@ class GoogleSignInAccount implements GoogleIdentity { if (response.idToken == null) { response.idToken = _idToken; } - // re-use auth code obtained on login. - if (response.serverAuthCode == null) { - response.serverAuthCode = _serverAuthCode; - } + return GoogleSignInAuthentication._(response); } @@ -138,13 +134,13 @@ class GoogleSignInAccount implements GoogleIdentity { email == otherAccount.email && id == otherAccount.id && photoUrl == otherAccount.photoUrl && - _idToken == otherAccount._idToken && - _serverAuthCode == otherAccount._serverAuthCode; + serverAuthCode == otherAccount.serverAuthCode && + _idToken == otherAccount._idToken; } @override int get hashCode => - hashValues(displayName, email, id, photoUrl, _idToken, _serverAuthCode); + hashValues(displayName, email, id, photoUrl, _idToken, serverAuthCode); @override String toString() { @@ -153,6 +149,7 @@ class GoogleSignInAccount implements GoogleIdentity { 'email': email, 'id': id, 'photoUrl': photoUrl, + 'serverAuthCode': serverAuthCode }; return 'GoogleSignInAccount:$data'; } diff --git a/packages/google_sign_in/google_sign_in/lib/src/common.dart b/packages/google_sign_in/google_sign_in/lib/src/common.dart index 068403e74629..8a1d4dcb354f 100644 --- a/packages/google_sign_in/google_sign_in/lib/src/common.dart +++ b/packages/google_sign_in/google_sign_in/lib/src/common.dart @@ -34,4 +34,7 @@ abstract class GoogleIdentity { /// /// Not guaranteed to be present for all users, even when configured. String? get photoUrl; + + /// Server auth code used to access Google Login + String? get serverAuthCode; } diff --git a/packages/google_sign_in/google_sign_in/lib/testing.dart b/packages/google_sign_in/google_sign_in/lib/testing.dart index c4d2da3089a5..e519b34b199a 100644 --- a/packages/google_sign_in/google_sign_in/lib/testing.dart +++ b/packages/google_sign_in/google_sign_in/lib/testing.dart @@ -67,6 +67,7 @@ class FakeUser { this.email, this.displayName, this.photoUrl, + this.serverAuthCode, this.idToken, this.accessToken, }); @@ -83,6 +84,9 @@ class FakeUser { /// Will be converted into [GoogleSignInUserData.photoUrl]. final String? photoUrl; + /// Will be converted into [GoogleSignInUserData.serverAuthCode]. + final String? serverAuthCode; + /// Will be converted into [GoogleSignInTokenData.idToken]. final String? idToken; @@ -94,6 +98,7 @@ class FakeUser { 'email': email, 'displayName': displayName, 'photoUrl': photoUrl, + 'serverAuthCode': serverAuthCode, 'idToken': idToken, }; } diff --git a/packages/google_sign_in/google_sign_in/pubspec.yaml b/packages/google_sign_in/google_sign_in/pubspec.yaml index 562f35df737a..2d479bda86b2 100644 --- a/packages/google_sign_in/google_sign_in/pubspec.yaml +++ b/packages/google_sign_in/google_sign_in/pubspec.yaml @@ -3,7 +3,7 @@ description: Flutter plugin for Google Sign-In, a secure authentication system for signing in with a Google account on Android and iOS. repository: https://github.com/flutter/plugins/tree/master/packages/google_sign_in/google_sign_in issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+google_sign_in%22 -version: 5.1.1 +version: 6.0.0 environment: sdk: ">=2.14.0 <3.0.0" @@ -23,7 +23,7 @@ flutter: dependencies: flutter: sdk: flutter - google_sign_in_platform_interface: ^2.0.2 + google_sign_in_platform_interface: ^2.1.0 google_sign_in_web: ^0.10.0 meta: ^1.3.0 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 02902eaa76aa..96de81c87771 100644 --- 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 @@ -34,11 +34,7 @@ void main() { 'disconnect': null, 'isSignedIn': true, 'requestScopes': true, - 'getTokens': { - 'idToken': '123', - 'accessToken': '456', - 'serverAuthCode': null, - }, + 'getTokens': {'idToken': '123', 'accessToken': '456'}, }; final List log = []; @@ -351,7 +347,6 @@ void main() { expect(auth.accessToken, '456'); expect(auth.idToken, '123'); - expect(auth.serverAuthCode, '789'); expect( log, [ @@ -383,11 +378,11 @@ void main() { group('GoogleSignIn with fake backend', () { const FakeUser kUserData = FakeUser( - id: "8162538176523816253123", - displayName: "John Doe", - email: "john.doe@gmail.com", - photoUrl: "https://lh5.googleusercontent.com/photo.jpg", - ); + id: "8162538176523816253123", + displayName: "John Doe", + email: "john.doe@gmail.com", + photoUrl: "https://lh5.googleusercontent.com/photo.jpg", + serverAuthCode: '789'); late GoogleSignIn googleSignIn; @@ -412,6 +407,7 @@ void main() { expect(user.email, equals(kUserData.email)); expect(user.id, equals(kUserData.id)); expect(user.photoUrl, equals(kUserData.photoUrl)); + expect(user.serverAuthCode, equals(kUserData.serverAuthCode)); await googleSignIn.disconnect(); expect(googleSignIn.currentUser, isNull); From f9097ffe5222c912c0627fe0a11aec5b6ccf3c82 Mon Sep 17 00:00:00 2001 From: Pavel Shapovalov Date: Fri, 8 Oct 2021 22:48:14 +0300 Subject: [PATCH 4/9] avoid breaking changes --- packages/google_sign_in/google_sign_in/CHANGELOG.md | 4 ++-- .../google_sign_in/google_sign_in/lib/google_sign_in.dart | 5 +++++ packages/google_sign_in/google_sign_in/pubspec.yaml | 2 +- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/packages/google_sign_in/google_sign_in/CHANGELOG.md b/packages/google_sign_in/google_sign_in/CHANGELOG.md index 906093d02af4..64eb8df14a3a 100644 --- a/packages/google_sign_in/google_sign_in/CHANGELOG.md +++ b/packages/google_sign_in/google_sign_in/CHANGELOG.md @@ -1,6 +1,6 @@ -## 6.0.0 +## 5.2.0 -* **Breaking change**. Move `serverAuthCode` from `GoogleSignInAuthentication` to `GoogleSignInAccount`. +* Add `GoogleSignInAccount.serverAuthCode`. Mark `GoogleSignInAuthentication.serverAuthCode` as deprecated and always null. ## 5.1.1 diff --git a/packages/google_sign_in/google_sign_in/lib/google_sign_in.dart b/packages/google_sign_in/google_sign_in/lib/google_sign_in.dart index b41651b8e526..3cb156678715 100644 --- a/packages/google_sign_in/google_sign_in/lib/google_sign_in.dart +++ b/packages/google_sign_in/google_sign_in/lib/google_sign_in.dart @@ -27,6 +27,11 @@ class GoogleSignInAuthentication { /// The OAuth2 access token to access Google services. String? get accessToken => _data.accessToken; + /// Server auth code used to access Google Login + @Deprecated( + 'Always null. Use the `GoogleSignInAccount.serverAuthCode` property instead') + String? get serverAuthCode => null; + @override String toString() => 'GoogleSignInAuthentication:$_data'; } diff --git a/packages/google_sign_in/google_sign_in/pubspec.yaml b/packages/google_sign_in/google_sign_in/pubspec.yaml index 2d479bda86b2..91114c6b0491 100644 --- a/packages/google_sign_in/google_sign_in/pubspec.yaml +++ b/packages/google_sign_in/google_sign_in/pubspec.yaml @@ -3,7 +3,7 @@ description: Flutter plugin for Google Sign-In, a secure authentication system for signing in with a Google account on Android and iOS. repository: https://github.com/flutter/plugins/tree/master/packages/google_sign_in/google_sign_in issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+google_sign_in%22 -version: 6.0.0 +version: 5.2.0 environment: sdk: ">=2.14.0 <3.0.0" From 6c63d8103482aa572671ab6d3d6b1ed0cb8ae271 Mon Sep 17 00:00:00 2001 From: Pavel Shapovalov Date: Sat, 9 Oct 2021 00:38:58 +0300 Subject: [PATCH 5/9] pass GoogleSignInAccount.serverAuthCode to GoogleSignInAuthentication --- .../google_sign_in/lib/google_sign_in.dart | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/packages/google_sign_in/google_sign_in/lib/google_sign_in.dart b/packages/google_sign_in/google_sign_in/lib/google_sign_in.dart index 3cb156678715..a033971583e5 100644 --- a/packages/google_sign_in/google_sign_in/lib/google_sign_in.dart +++ b/packages/google_sign_in/google_sign_in/lib/google_sign_in.dart @@ -17,7 +17,7 @@ export 'widgets.dart'; /// Holds authentication tokens after sign in. class GoogleSignInAuthentication { - GoogleSignInAuthentication._(this._data); + GoogleSignInAuthentication._(this._data, this.serverAuthCode); final GoogleSignInTokenData _data; @@ -28,9 +28,8 @@ class GoogleSignInAuthentication { String? get accessToken => _data.accessToken; /// Server auth code used to access Google Login - @Deprecated( - 'Always null. Use the `GoogleSignInAccount.serverAuthCode` property instead') - String? get serverAuthCode => null; + @Deprecated('Use the `GoogleSignInAccount.serverAuthCode` property instead') + final String? serverAuthCode; @override String toString() => 'GoogleSignInAuthentication:$_data'; @@ -104,7 +103,7 @@ class GoogleSignInAccount implements GoogleIdentity { response.idToken = _idToken; } - return GoogleSignInAuthentication._(response); + return GoogleSignInAuthentication._(response, serverAuthCode); } /// Convenience method returning a `` map of HTML Authorization From 58a16b32f07efe8e91fa6e021993465e1cc229a1 Mon Sep 17 00:00:00 2001 From: Pavel Shapovalov Date: Sat, 9 Oct 2021 00:48:53 +0300 Subject: [PATCH 6/9] restore prev behaviour for deprecated serverAuthCode --- packages/google_sign_in/google_sign_in/CHANGELOG.md | 2 +- .../google_sign_in/google_sign_in/lib/google_sign_in.dart | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/google_sign_in/google_sign_in/CHANGELOG.md b/packages/google_sign_in/google_sign_in/CHANGELOG.md index 64eb8df14a3a..6f4ccebf8dc3 100644 --- a/packages/google_sign_in/google_sign_in/CHANGELOG.md +++ b/packages/google_sign_in/google_sign_in/CHANGELOG.md @@ -1,6 +1,6 @@ ## 5.2.0 -* Add `GoogleSignInAccount.serverAuthCode`. Mark `GoogleSignInAuthentication.serverAuthCode` as deprecated and always null. +* Add `GoogleSignInAccount.serverAuthCode`. Mark `GoogleSignInAuthentication.serverAuthCode` as deprecated. ## 5.1.1 diff --git a/packages/google_sign_in/google_sign_in/lib/google_sign_in.dart b/packages/google_sign_in/google_sign_in/lib/google_sign_in.dart index a033971583e5..e104093c69bc 100644 --- a/packages/google_sign_in/google_sign_in/lib/google_sign_in.dart +++ b/packages/google_sign_in/google_sign_in/lib/google_sign_in.dart @@ -17,7 +17,7 @@ export 'widgets.dart'; /// Holds authentication tokens after sign in. class GoogleSignInAuthentication { - GoogleSignInAuthentication._(this._data, this.serverAuthCode); + GoogleSignInAuthentication._(this._data); final GoogleSignInTokenData _data; @@ -29,7 +29,7 @@ class GoogleSignInAuthentication { /// Server auth code used to access Google Login @Deprecated('Use the `GoogleSignInAccount.serverAuthCode` property instead') - final String? serverAuthCode; + String? get serverAuthCode => _data.serverAuthCode; @override String toString() => 'GoogleSignInAuthentication:$_data'; @@ -103,7 +103,7 @@ class GoogleSignInAccount implements GoogleIdentity { response.idToken = _idToken; } - return GoogleSignInAuthentication._(response, serverAuthCode); + return GoogleSignInAuthentication._(response); } /// Convenience method returning a `` map of HTML Authorization From bebb406f75c25d8fd1b9bfdf7db6b7586f833893 Mon Sep 17 00:00:00 2001 From: Pavel Shapovalov Date: Sat, 9 Oct 2021 01:23:21 +0300 Subject: [PATCH 7/9] restore deprecated test --- .../google_sign_in/test/google_sign_in_test.dart | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) 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 96de81c87771..948a4e0455b8 100644 --- 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 @@ -34,7 +34,11 @@ void main() { 'disconnect': null, 'isSignedIn': true, 'requestScopes': true, - 'getTokens': {'idToken': '123', 'accessToken': '456'}, + 'getTokens': { + 'idToken': '123', + 'accessToken': '456', + 'serverAuthCode': '789', + }, }; final List log = []; @@ -347,6 +351,7 @@ void main() { expect(auth.accessToken, '456'); expect(auth.idToken, '123'); + expect(auth.serverAuthCode, '789'); expect( log, [ From 28194da8872b952975b5af661e235c4244f75ac7 Mon Sep 17 00:00:00 2001 From: Pavel Shapovalov Date: Fri, 15 Oct 2021 17:23:31 +0300 Subject: [PATCH 8/9] Trigger Build From 885e1c184ba5cbbc038dfe4fe2ded5d984261e71 Mon Sep 17 00:00:00 2001 From: Pavel Shapovalov Date: Fri, 15 Oct 2021 17:35:57 +0300 Subject: [PATCH 9/9] fix deprecated_member_use_from_same_package --- .../google_sign_in/test/google_sign_in_test.dart | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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 948a4e0455b8..76bc2d600541 100644 --- 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 @@ -351,7 +351,8 @@ void main() { expect(auth.accessToken, '456'); expect(auth.idToken, '123'); - expect(auth.serverAuthCode, '789'); + // fix deprecated_member_use_from_same_package + // expect(auth.serverAuthCode, '789'); expect( log, [