From e79d4e5503d269ecd7d2fae1fda2fa45ff6763fd Mon Sep 17 00:00:00 2001 From: Yuwen Yan Date: Wed, 11 Dec 2019 17:55:59 +0000 Subject: [PATCH 1/2] Expose network error --- .../flutter/plugins/googlesignin/GoogleSignInPlugin.java | 3 +++ .../google_sign_in/ios/Classes/FLTGoogleSignInPlugin.m | 3 +++ .../google_sign_in/google_sign_in/lib/google_sign_in.dart | 8 ++++++-- 3 files changed, 12 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 d2fc260c7b1c..6c9bedde1038 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 @@ -173,6 +173,7 @@ public static final class Delegate implements IDelegate, PluginRegistry.Activity // These error codes must match with ones declared on iOS and Dart sides. private static final String ERROR_REASON_SIGN_IN_CANCELED = "sign_in_canceled"; private static final String ERROR_REASON_SIGN_IN_REQUIRED = "sign_in_required"; + private static final String ERROR_REASON_NETWORK_ERROR = "network_error"; private static final String ERROR_REASON_SIGN_IN_FAILED = "sign_in_failed"; private static final String ERROR_FAILURE_TO_RECOVER_AUTH = "failed_to_recover_auth"; private static final String ERROR_USER_RECOVERABLE_AUTH = "user_recoverable_auth"; @@ -372,6 +373,8 @@ private String errorCodeForStatus(int statusCode) { return ERROR_REASON_SIGN_IN_CANCELED; } else if (statusCode == CommonStatusCodes.SIGN_IN_REQUIRED) { return ERROR_REASON_SIGN_IN_REQUIRED; + } else if (statusCode == CommonStatusCodes.NETWORK_ERROR) { + return ERROR_REASON_NETWORK_ERROR; } else { return ERROR_REASON_SIGN_IN_FAILED; } 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 559997f9d621..dff3481ec16f 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 @@ -13,6 +13,7 @@ // These error codes must match with ones declared on Android and Dart sides. static NSString *const kErrorReasonSignInRequired = @"sign_in_required"; static NSString *const kErrorReasonSignInCanceled = @"sign_in_canceled"; +static NSString *const kErrorReasonNetworkError = @"network_error"; static NSString *const kErrorReasonSignInFailed = @"sign_in_failed"; static FlutterError *getFlutterError(NSError *error) { @@ -21,6 +22,8 @@ errorCode = kErrorReasonSignInRequired; } else if (error.code == kGIDSignInErrorCodeCanceled) { errorCode = kErrorReasonSignInCanceled; + } else if ([error.domain isEqualToString:NSURLErrorDomain]) { + errorCode = kErrorReasonNetworkError; } else { errorCode = kErrorReasonSignInFailed; } 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 a78e92151811..c0ae3e9b449f 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 @@ -194,6 +194,9 @@ class GoogleSignIn { /// user. static const String kSignInCanceledError = 'sign_in_canceled'; + /// Error code indicating network error. Retrying should resolve the problem. + static const String kNetworkError = 'network_error'; + /// Error code indicating that attempt to sign in failed. static const String kSignInFailedError = 'sign_in_failed'; @@ -309,8 +312,9 @@ class GoogleSignIn { /// /// When [suppressErrors] is set to `false` and an error occurred during sign in /// returned Future completes with [PlatformException] whose `code` can be - /// either [kSignInRequiredError] (when there is no authenticated user) or - /// [kSignInFailedError] (when an unknown error occurred). + /// one of [kSignInRequiredError] (when there is no authenticated user) , + /// [kNetworkError] (when a network error occurred) or [kSignInFailedError] + /// (when an unknown error occurred). Future signInSilently({ bool suppressErrors = true, }) async { From 8747345cc36b69f30b8eba908b3b1d5b195e5f20 Mon Sep 17 00:00:00 2001 From: Yuwen Yan Date: Thu, 12 Dec 2019 08:08:43 +0000 Subject: [PATCH 2/2] Update CHANGELOG.md and pubspec.yaml --- 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 8e5aa4581196..5b9975f52eff 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 @@ +## 4.1.1 + +* Added a new error code `network_error`, and return it when a network error occurred. + ## 4.1.0 * Support web by default. diff --git a/packages/google_sign_in/google_sign_in/pubspec.yaml b/packages/google_sign_in/google_sign_in/pubspec.yaml index 45b395f87ce6..02f8f63fd7a8 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: 4.1.0 +version: 4.1.1 flutter: plugin: