Skip to content

Commit 4b769c6

Browse files
author
Austin Feight
committed
allow additional scopes at sign in
1 parent bf45835 commit 4b769c6

4 files changed

Lines changed: 66 additions & 9 deletions

File tree

GoogleSignIn/Sources/GIDSignIn.m

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -203,25 +203,38 @@ - (BOOL)restorePreviousSignInNoRefresh {
203203

204204
- (void)signInWithConfiguration:(GIDConfiguration *)configuration
205205
presentingViewController:(UIViewController *)presentingViewController
206-
hint:(nullable NSString *)hint
207206
callback:(nullable GIDSignInCallback)callback {
208-
GIDSignInInternalOptions *options =
209-
[GIDSignInInternalOptions defaultOptionsWithConfiguration:configuration
210-
presentingViewController:presentingViewController
211-
loginHint:hint
212-
callback:callback];
213-
[self signInWithOptions:options];
207+
[self signInWithConfiguration:configuration
208+
presentingViewController:presentingViewController
209+
hint:nil
210+
callback:callback];
214211
}
215212

216213
- (void)signInWithConfiguration:(GIDConfiguration *)configuration
217214
presentingViewController:(UIViewController *)presentingViewController
215+
hint:(nullable NSString *)hint
218216
callback:(nullable GIDSignInCallback)callback {
219217
[self signInWithConfiguration:configuration
218+
additionalScopes:@[]
220219
presentingViewController:presentingViewController
221-
hint:nil
220+
hint:hint
222221
callback:callback];
223222
}
224223

224+
- (void)signInWithConfiguration:(GIDConfiguration *)configuration
225+
additionalScopes:(NSArray<NSString *> *)additionalScopes
226+
presentingViewController:(UIViewController *)presentingViewController
227+
hint:(nullable NSString *)hint
228+
callback:(nullable GIDSignInCallback)callback {
229+
GIDSignInInternalOptions *options =
230+
[GIDSignInInternalOptions defaultOptionsWithConfiguration:configuration
231+
additionalScopes:additionalScopes
232+
presentingViewController:presentingViewController
233+
loginHint:hint
234+
callback:callback];
235+
[self signInWithOptions:options];
236+
}
237+
225238
- (void)addScopes:(NSArray<NSString *> *)scopes
226239
presentingViewController:(UIViewController *)presentingViewController
227240
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: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,29 @@ 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 hint An optional hint for the authorization server, for example the user's ID or email
142+
/// address, to be prefilled if possible.
143+
/// @param callback The `GIDSignInCallback` block that is called on completion. This block will be
144+
/// called asynchronously on the main queue.
145+
- (void)signInWithConfiguration:(GIDConfiguration *)configuration
146+
additionalScopes:(NSArray<NSString *> *)additionalScopes
147+
presentingViewController:(UIViewController *)presentingViewController
148+
hint:(nullable NSString *)hint
149+
callback:(nullable GIDSignInCallback)callback;
150+
151+
129152
/// Starts an interactive consent flow to add scopes to the current user's grants.
130153
///
131154
/// The callback will be called at the end of this process. If successful, a new `GIDGoogleUser`

0 commit comments

Comments
 (0)