[google_sign_in] Add ability to return serverAuthCode (#2116)
diff --git a/packages/google_sign_in/google_sign_in/CHANGELOG.md b/packages/google_sign_in/google_sign_in/CHANGELOG.md
index a0d2d47..b3c3955 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.5.0
+
+* Add support for getting `serverAuthCode`.
+
## 4.4.6
* Update lower bound of dart dependency to 2.1.0.
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 e8fcd29..ce04e59 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
@@ -335,6 +335,7 @@
.getIdentifier("default_web_client_id", "string", context.getPackageName());
if (clientIdIdentifier != 0) {
optionsBuilder.requestIdToken(context.getString(clientIdIdentifier));
+ optionsBuilder.requestServerAuthCode(context.getString(clientIdIdentifier));
}
for (String scope : requestedScopes) {
optionsBuilder.requestScopes(new Scope(scope));
@@ -484,6 +485,7 @@
response.put("email", account.getEmail());
response.put("id", account.getId());
response.put("idToken", account.getIdToken());
+ response.put("serverAuthCode", account.getServerAuthCode());
response.put("displayName", account.getDisplayName());
if (account.getPhotoUrl() != null) {
response.put("photoUrl", account.getPhotoUrl().toString());
diff --git a/packages/google_sign_in/google_sign_in/example/android/app/src/main/res/values/strings.xml b/packages/google_sign_in/google_sign_in/example/android/app/src/main/res/values/strings.xml
new file mode 100644
index 0000000..c7e28ff
--- /dev/null
+++ b/packages/google_sign_in/google_sign_in/example/android/app/src/main/res/values/strings.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <string name="default_web_client_id">YOUR_WEB_CLIENT_ID</string>
+</resources>
diff --git a/packages/google_sign_in/google_sign_in/example/ios/Runner/GoogleService-Info.plist b/packages/google_sign_in/google_sign_in/example/ios/Runner/GoogleService-Info.plist
index 8d24ccc..6042aab 100644
--- a/packages/google_sign_in/google_sign_in/example/ios/Runner/GoogleService-Info.plist
+++ b/packages/google_sign_in/google_sign_in/example/ios/Runner/GoogleService-Info.plist
@@ -38,5 +38,7 @@
<string>1:479882132969:ios:2643f950e0a0da08</string>
<key>DATABASE_URL</key>
<string>https://my-flutter-proj.firebaseio.com</string>
+ <key>SERVER_CLIENT_ID</key>
+ <string>YOUR_SERVER_CLIENT_ID</string>
</dict>
</plist>
\ No newline at end of file
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 9049fcd..f621d1e 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
@@ -10,6 +10,8 @@
// for more info.
static NSString *const kClientIdKey = @"CLIENT_ID";
+static NSString *const kServerClientIdKey = @"SERVER_CLIENT_ID";
+
// 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";
@@ -76,6 +78,7 @@
if (path) {
NSMutableDictionary *plist = [[NSMutableDictionary alloc] initWithContentsOfFile:path];
[GIDSignIn sharedInstance].clientID = plist[kClientIdKey];
+ [GIDSignIn sharedInstance].serverClientID = plist[kServerClientIdKey];
[GIDSignIn sharedInstance].scopes = call.arguments[@"scopes"];
[GIDSignIn sharedInstance].hostedDomain = call.arguments[@"hostedDomain"];
result(nil);
@@ -221,6 +224,7 @@
@"email" : user.profile.email ?: [NSNull null],
@"id" : user.userID ?: [NSNull null],
@"photoUrl" : [photoUrl absoluteString] ?: [NSNull null],
+ @"serverAuthCode" : user.serverAuthCode ?: [NSNull null]
}
error:nil];
}
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 7402c7a..0f1f15b 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,9 @@
/// 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';
}
diff --git a/packages/google_sign_in/google_sign_in/pubspec.yaml b/packages/google_sign_in/google_sign_in/pubspec.yaml
index e02c8ee..b82a2bd 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 @@
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.4.6
+version: 4.5.0
flutter:
plugin:
@@ -16,7 +16,7 @@
default_package: google_sign_in_web
dependencies:
- google_sign_in_platform_interface: ^1.1.0
+ google_sign_in_platform_interface: ^1.1.1
flutter:
sdk: flutter
meta: ^1.0.4
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 898c27f..5969edb 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
@@ -36,6 +36,7 @@
'getTokens': <dynamic, dynamic>{
'idToken': '123',
'accessToken': '456',
+ 'serverAuthCode': '789',
},
};
@@ -370,6 +371,7 @@
expect(auth.accessToken, '456');
expect(auth.idToken, '123');
+ expect(auth.serverAuthCode, '789');
expect(
log,
<Matcher>[