From 459ea6d7a6c15bc186d2260be4e2b0ea6bec8113 Mon Sep 17 00:00:00 2001 From: Jay Moore Date: Wed, 10 Sep 2014 08:18:50 -0400 Subject: [PATCH] add presenting view controller parameter --- UPPlatformSDK/UPPlatformSDK/UPAuthViewController.h | 2 +- UPPlatformSDK/UPPlatformSDK/UPAuthViewController.m | 8 ++++++-- UPPlatformSDK/UPPlatformSDK/UPPlatform.h | 14 ++++++++++++++ UPPlatformSDK/UPPlatformSDK/UPPlatform.m | 7 ++++++- 4 files changed, 27 insertions(+), 4 deletions(-) diff --git a/UPPlatformSDK/UPPlatformSDK/UPAuthViewController.h b/UPPlatformSDK/UPPlatformSDK/UPAuthViewController.h index ec3915a..762990d 100644 --- a/UPPlatformSDK/UPPlatformSDK/UPAuthViewController.h +++ b/UPPlatformSDK/UPPlatformSDK/UPAuthViewController.h @@ -25,7 +25,7 @@ @interface UPAuthViewController : UINavigationController - (id)initWithURL:(NSURL *)url delegate:(id)delegate; -- (void)show; +- (void)presentWithViewController:(UIViewController*)presentingViewController; @end #endif \ No newline at end of file diff --git a/UPPlatformSDK/UPPlatformSDK/UPAuthViewController.m b/UPPlatformSDK/UPPlatformSDK/UPAuthViewController.m index a70b92d..9da777a 100644 --- a/UPPlatformSDK/UPPlatformSDK/UPAuthViewController.m +++ b/UPPlatformSDK/UPPlatformSDK/UPAuthViewController.m @@ -80,9 +80,13 @@ self.webView.backgroundColor = [UIColor whiteColor]; } -- (void)show +- (void)presentWithViewController:(UIViewController*)presentingViewController; { - [self.rootViewController presentViewController:self animated:YES completion:^{ + if (presentingViewController == nil) { + presentingViewController = self.rootViewController; + } + + [presentingViewController presentViewController:self animated:YES completion:^{ [self.webView loadRequest:[NSURLRequest requestWithURL:self.authURL]]; }]; } diff --git a/UPPlatformSDK/UPPlatformSDK/UPPlatform.h b/UPPlatformSDK/UPPlatformSDK/UPPlatform.h index c3a63e1..9561311 100644 --- a/UPPlatformSDK/UPPlatformSDK/UPPlatform.h +++ b/UPPlatformSDK/UPPlatformSDK/UPPlatform.h @@ -178,6 +178,20 @@ typedef void(^UPPlatformRequestCompletion)(UPURLRequest *request, UPURLResponse */ - (void)startSessionWithClientID:(NSString *)clientID clientSecret:(NSString *)clientSecret authScope:(UPPlatformAuthScope)authScope redirectURI:(NSString *)redirectURI completion:(UPPlatformSessionCompletion)completion; +/** + * Starts a user's session. + * + * This will present a UIWebView to perform the OAuth authentication flow, taking care of getting the access token for HTTP requests. + * + * @param clientID The client ID provided during application signup. + * @param clientSecret The client secret provided during application signup. + * @param authScope Options to request specific auth scopes during authentication. Defaults to UPPlatformAuthScopeBasicRead. + * @param redirectURI An alternate redirect URI used during authentication. This is not common. + * @param presentingViewController View controller to present authentication view controller. Uses the window root view controller if nil. + * @param completion The session completion block. + */ +- (void)startSessionWithClientID:(NSString *)clientID clientSecret:(NSString *)clientSecret authScope:(UPPlatformAuthScope)authScope redirectURI:(NSString *)redirectURI presentingViewController:(UIViewController*)presentingViewController completion:(UPPlatformSessionCompletion)completion; + #endif /** diff --git a/UPPlatformSDK/UPPlatformSDK/UPPlatform.m b/UPPlatformSDK/UPPlatformSDK/UPPlatform.m index c1f7ba2..f0a4ef6 100644 --- a/UPPlatformSDK/UPPlatformSDK/UPPlatform.m +++ b/UPPlatformSDK/UPPlatformSDK/UPPlatform.m @@ -302,6 +302,11 @@ decisionListener:(id)listener } - (void)startSessionWithClientID:(NSString *)clientID clientSecret:(NSString *)clientSecret authScope:(UPPlatformAuthScope)authScope redirectURI:(NSString *)redirectURI completion:(UPPlatformSessionCompletion)completion +{ + [self startSessionWithClientID:clientID clientSecret:clientSecret authScope:authScope redirectURI:redirectURI presentingViewController:nil completion:completion]; +} + +- (void)startSessionWithClientID:(NSString *)clientID clientSecret:(NSString *)clientSecret authScope:(UPPlatformAuthScope)authScope redirectURI:(NSString *)redirectURI presentingViewController:(UIViewController*)presentingViewController completion:(UPPlatformSessionCompletion)completion { self.sessionCompletion = completion; self.clientID = clientID; @@ -328,7 +333,7 @@ decisionListener:(id)listener NSMutableString *authURLString = [NSMutableString stringWithFormat:@"%@/auth/oauth2/auth?response_type=code&client_id=%@&scope=%@&redirect_uri=%@", [UPPlatform basePlatformURL], self.clientID, [self stringFromAuthScope:authScope], redirectURI]; self.authViewController = [[UPAuthViewController alloc] initWithURL:[NSURL URLWithString:authURLString] delegate:self]; - [self.authViewController show]; + [self.authViewController presentWithViewController:presentingViewController]; } #endif