From 0a6265672c9fa2b7a851b9e19926af34cc0a1d97 Mon Sep 17 00:00:00 2001 From: ayunav Date: Wed, 23 Mar 2016 11:10:02 -0400 Subject: [PATCH] modify requestPermissions method to open SFSafariViewController to comply with AppStore requirements --- venmo-sdk/Venmo.h | 4 +++- venmo-sdk/Venmo.m | 19 +++++++++++++++---- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/venmo-sdk/Venmo.h b/venmo-sdk/Venmo.h index d155cbb..f14c7ce 100644 --- a/venmo-sdk/Venmo.h +++ b/venmo-sdk/Venmo.h @@ -72,7 +72,9 @@ typedef void (^VENOAuthCompletionHandler)(BOOL success, NSError *error); * @param permissions List of permissions. * @param completionHandler Completion handler to call upon returning from OAuth flow. */ -- (void)requestPermissions:(NSArray *)permissions withCompletionHandler:(VENOAuthCompletionHandler)handler; +- (void)requestPermissions:(NSArray *)permissions + fromViewController:(UIViewController *)viewController + withCompletionHandler:(VENOAuthCompletionHandler)handler; /** diff --git a/venmo-sdk/Venmo.m b/venmo-sdk/Venmo.m index 05290a2..8995328 100644 --- a/venmo-sdk/Venmo.m +++ b/venmo-sdk/Venmo.m @@ -20,6 +20,8 @@ #import "UIDevice+IdentifierAddition.h" #endif +@import SafariServices; + static Venmo *sharedInstance = nil; @interface VENSession () @@ -28,7 +30,7 @@ @interface VENSession () @end -@interface Venmo () +@interface Venmo () @property (copy, nonatomic, readwrite) NSString *appId; @property (copy, nonatomic, readwrite) NSString *appSecret; @@ -95,20 +97,29 @@ + (BOOL)isVenmoAppInstalled { #pragma mark - Sessions - (void)requestPermissions:(NSArray *)permissions + fromViewController:(UIViewController *)viewController withCompletionHandler:(VENOAuthCompletionHandler)completionHandler { + NSString *scopeURLEncoded = [permissions componentsJoinedByString:@"%20"]; self.OAuthCompletionHandler = completionHandler; self.session.state = VENSessionStateOpening; - + NSString *baseURL; if ([Venmo isVenmoAppInstalled]) { baseURL = @"venmo://"; } else { baseURL = [self baseURLPath]; } + NSURL *authURL = [NSURL URLWithString:[NSString stringWithFormat:@"%@oauth/authorize?sdk=ios&client_id=%@&scope=%@&response_type=code", baseURL, self.appId, scopeURLEncoded]]; - - [[UIApplication sharedApplication] openURL:authURL]; + + if ([Venmo isVenmoAppInstalled]) { + [[UIApplication sharedApplication] openURL:authURL]; + } else { + SFSafariViewController *safariViewController = [[SFSafariViewController alloc]initWithURL:authURL]; + safariViewController.delegate = viewController; + [viewController presentViewController:safariViewController animated:YES completion:nil]; + } }