Skip to content

Commit 0d8c0da

Browse files
author
Austin Feight
committed
allow requesting additional scopes during sign in
1 parent bf45835 commit 0d8c0da

File tree

7 files changed

+99
-9
lines changed

7 files changed

+99
-9
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
# 6.0.3 (2021-11-5)
2+
- Allow for additional scopes to be requested at sign in
3+
([#2](https://github.com/elliottech/GoogleSignIn-iOS/pull/2))
4+
15
# 6.0.2 (2021-8-20)
26
- Ensure that module imports can be used when built as a library.
37
([#53](https://github.com/google/GoogleSignIn-iOS/pull/53))

GoogleSignIn.podspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
Pod::Spec.new do |s|
22
s.name = 'GoogleSignIn'
3-
s.version = '6.0.2'
3+
s.version = '6.0.3'
44
s.summary = 'Enables iOS apps to sign in with Google.'
55
s.description = <<-DESC
66
The Google Sign-In SDK allows users to sign in with their Google account from third-party apps.

GoogleSignIn/Sources/GIDSignIn.m

Lines changed: 30 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -201,27 +201,51 @@ - (BOOL)restorePreviousSignInNoRefresh {
201201
return YES;
202202
}
203203

204+
- (void)signInWithConfiguration:(GIDConfiguration *)configuration
205+
presentingViewController:(UIViewController *)presentingViewController
206+
callback:(nullable GIDSignInCallback)callback {
207+
[self signInWithConfiguration:configuration
208+
presentingViewController:presentingViewController
209+
hint:nil
210+
callback:callback];
211+
}
212+
204213
- (void)signInWithConfiguration:(GIDConfiguration *)configuration
205214
presentingViewController:(UIViewController *)presentingViewController
206215
hint:(nullable NSString *)hint
207216
callback:(nullable GIDSignInCallback)callback {
208-
GIDSignInInternalOptions *options =
209-
[GIDSignInInternalOptions defaultOptionsWithConfiguration:configuration
210-
presentingViewController:presentingViewController
211-
loginHint:hint
212-
callback:callback];
213-
[self signInWithOptions:options];
217+
[self signInWithConfiguration:configuration
218+
additionalScopes:@[]
219+
presentingViewController:presentingViewController
220+
hint:hint
221+
callback:callback];
214222
}
215223

216224
- (void)signInWithConfiguration:(GIDConfiguration *)configuration
225+
additionalScopes:(NSArray<NSString *> *)additionalScopes
217226
presentingViewController:(UIViewController *)presentingViewController
218227
callback:(nullable GIDSignInCallback)callback {
219228
[self signInWithConfiguration:configuration
229+
additionalScopes:additionalScopes
220230
presentingViewController:presentingViewController
221231
hint:nil
222232
callback:callback];
223233
}
224234

235+
- (void)signInWithConfiguration:(GIDConfiguration *)configuration
236+
additionalScopes:(NSArray<NSString *> *)additionalScopes
237+
presentingViewController:(UIViewController *)presentingViewController
238+
hint:(nullable NSString *)hint
239+
callback:(nullable GIDSignInCallback)callback {
240+
GIDSignInInternalOptions *options =
241+
[GIDSignInInternalOptions defaultOptionsWithConfiguration:configuration
242+
additionalScopes:additionalScopes
243+
presentingViewController:presentingViewController
244+
loginHint:hint
245+
callback:callback];
246+
[self signInWithOptions:options];
247+
}
248+
225249
- (void)addScopes:(NSArray<NSString *> *)scopes
226250
presentingViewController:(UIViewController *)presentingViewController
227251
callback:(nullable GIDSignInCallback)callback {

GoogleSignIn/Sources/GIDSignInInternalOptions.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,14 @@ NS_ASSUME_NONNULL_BEGIN
5656
loginHint:(nullable NSString *)loginHint
5757
callback:(GIDSignInCallback)callback;
5858

59+
/// Creates the default options, with the ability to add additional scopes.
60+
+ (instancetype)defaultOptionsWithConfiguration:(nullable GIDConfiguration *)configuration
61+
additionalScopes:(NSArray<NSString *> *)additionalScopes
62+
presentingViewController:
63+
(nullable UIViewController *)presentingViewController
64+
loginHint:(nullable NSString *)loginHint
65+
callback:(GIDSignInCallback)callback;
66+
5967
/// Creates the options to sign in silently.
6068
+ (instancetype)silentOptionsWithCallback:(GIDSignInCallback)callback;
6169

GoogleSignIn/Sources/GIDSignInInternalOptions.m

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,19 @@ + (instancetype)defaultOptionsWithConfiguration:(nullable GIDConfiguration *)con
2525
(nullable UIViewController *)presentingViewController
2626
loginHint:(nullable NSString *)loginHint
2727
callback:(GIDSignInCallback)callback {
28+
return [self defaultOptionsWithConfiguration:configuration
29+
additionalScopes:@[]
30+
presentingViewController:presentingViewController
31+
loginHint:loginHint
32+
callback:callback];
33+
}
34+
35+
+ (instancetype)defaultOptionsWithConfiguration:(nullable GIDConfiguration *)configuration
36+
additionalScopes:(NSArray<NSString *> *)additionalScopes
37+
presentingViewController:
38+
(nullable UIViewController *)presentingViewController
39+
loginHint:(nullable NSString *)loginHint
40+
callback:(GIDSignInCallback)callback {
2841
GIDSignInInternalOptions *options = [[GIDSignInInternalOptions alloc] init];
2942
if (options) {
3043
options->_interactive = YES;
@@ -33,7 +46,7 @@ + (instancetype)defaultOptionsWithConfiguration:(nullable GIDConfiguration *)con
3346
options->_presentingViewController = presentingViewController;
3447
options->_loginHint = loginHint;
3548
options->_callback = callback;
36-
options->_scopes = [GIDScopes scopesWithBasicProfile:@[]];
49+
options->_scopes = [GIDScopes scopesWithBasicProfile:additionalScopes];
3750
}
3851
return options;
3952
}

GoogleSignIn/Sources/Public/GoogleSignIn/GIDSignIn.h

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,47 @@ typedef void (^GIDDisconnectCallback)(NSError *_Nullable error);
126126
hint:(nullable NSString *)hint
127127
callback:(nullable GIDSignInCallback)callback;
128128

129+
/// Starts an interactive sign-in flow using the provided configuration and a login hint.
130+
///
131+
/// The callback will be called at the end of this process. Any saved sign-in state will be
132+
/// replaced by the result of this flow. Note that this method should not be called when the app is
133+
/// starting up, (e.g in `application:didFinishLaunchingWithOptions:`); instead use the
134+
/// `restorePreviousSignInWithCallback:` method to restore a previous sign-in.
135+
///
136+
/// @param configuration The configuration properties to be used for this flow.
137+
/// @param additionalScopes Additional scopes to request
138+
/// @param presentingViewController The view controller used to present `SFSafariViewContoller` on
139+
/// iOS 9 and 10 and to supply `presentationContextProvider` for `ASWebAuthenticationSession` on
140+
/// iOS 13+.
141+
/// @param callback The `GIDSignInCallback` block that is called on completion. This block will be
142+
/// called asynchronously on the main queue.
143+
- (void)signInWithConfiguration:(GIDConfiguration *)configuration
144+
additionalScopes:(NSArray<NSString *> *)additionalScopes
145+
presentingViewController:(UIViewController *)presentingViewController
146+
callback:(nullable GIDSignInCallback)callback;
147+
148+
/// Starts an interactive sign-in flow using the provided configuration and a login hint.
149+
///
150+
/// The callback will be called at the end of this process. Any saved sign-in state will be
151+
/// replaced by the result of this flow. Note that this method should not be called when the app is
152+
/// starting up, (e.g in `application:didFinishLaunchingWithOptions:`); instead use the
153+
/// `restorePreviousSignInWithCallback:` method to restore a previous sign-in.
154+
///
155+
/// @param configuration The configuration properties to be used for this flow.
156+
/// @param additionalScopes Additional scopes to request
157+
/// @param presentingViewController The view controller used to present `SFSafariViewContoller` on
158+
/// iOS 9 and 10 and to supply `presentationContextProvider` for `ASWebAuthenticationSession` on
159+
/// iOS 13+.
160+
/// @param hint An optional hint for the authorization server, for example the user's ID or email
161+
/// address, to be prefilled if possible.
162+
/// @param callback The `GIDSignInCallback` block that is called on completion. This block will be
163+
/// called asynchronously on the main queue.
164+
- (void)signInWithConfiguration:(GIDConfiguration *)configuration
165+
additionalScopes:(NSArray<NSString *> *)additionalScopes
166+
presentingViewController:(UIViewController *)presentingViewController
167+
hint:(nullable NSString *)hint
168+
callback:(nullable GIDSignInCallback)callback;
169+
129170
/// Starts an interactive consent flow to add scopes to the current user's grants.
130171
///
131172
/// The callback will be called at the end of this process. If successful, a new `GIDGoogleUser`

Package.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
import PackageDescription
1919

20-
let googleSignInVersion = "6.0.2"
20+
let googleSignInVersion = "6.0.3"
2121

2222
let package = Package(
2323
name: "GoogleSignIn",

0 commit comments

Comments
 (0)