Google Drive iOS SDK: Display Cancel Login Button

google-drive-api, ios, ios5, ipad

Solution

Please follow the steps -

Go to--> `GTLSource->Common->OAuth2->Touch-->GTMOAuth2ViewControllerTouch.m`

-(void)viewDidLoad
{
[self setUpNavigation];

[self.navigationController.navigationBar setTitleTextAttributes:@   {NSForegroundColorAttributeName : [UIColor blueColor]}];
self.navigationController.navigationBar.translucent = NO;

UINavigationBar *naviBarObj = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, 320, 63)];
[self.view addSubview:naviBarObj];

UIBarButtonItem *cancelItem = [[UIBarButtonItem alloc]initWithTitle:[NSString stringWithFormat:NSLocalizedString(@"Cancel", nil)] style:UIBarButtonItemStyleBordered target:self
                                                             action:@selector(cancelGdriveSignIn:)];    
UINavigationItem *navigItem = [[UINavigationItem alloc] initWithTitle:@"Google Drive"];
navigItem.rightBarButtonItem = cancelItem;
naviBarObj.items = [NSArray arrayWithObjects: navigItem,nil];    
}

 -(void)cancelGdriveSignIn:(id)sender
 {
  [self dismissViewControllerAnimated:YES completion:^(void){}];
 }

-(void)setUpNavigation // Default Method Available 
{
 rightBarButtonItem_.customView = navButtonsView_;
 self.navigationItem.rightBarButtonItem = rightBarButtonItem_;
}

Once you add the above changes in the GTMOAuth2ViewControllerTouch.m and run it. you will get cancel button like this-

Happy Coding......!!

Problem

I'm working on a iOS Application and i use Google drive to access my files , login and listing file works fine , but I'm just asking how i can add a cancel button on the Login interface provided by Google drive sdk see the Image bellow As,you see there are no way to do a `cancel` or a `go back` button. Here Is my code ``` // verify if the user is already connected or not - (void)checkIfIsConnected { // Check for authorization. GTMOAuth2Authentication *auth = [GTMOAuth2ViewControllerTouch authForGoogleFromKeychainForName:kKeychainItemName clientID:kClientID clientSecret:kClientSecret]; if ([auth canAuthorize]) { [self isAuthorizedWithAuthentication:auth]; }else { [self ConnectToDrive]; } } - (GTLServiceDrive *)driveService { static GTLServiceDrive *service = nil; if (!service) { service = [[GTLServiceDrive alloc] init]; // Have the service object set tickets to fetch consecutive pages // of the feed so we do not need to manually fetch them. service.shouldFetchNextPages = YES; // Have the service object set tickets to retry temporary error conditions // automatically. service.retryEnabled = YES; } return service; } -(void) ConnectToDrive{ SEL finishedSelector = @selector(viewController:finishedWithAuth:error:); GTMOAuth2ViewControllerTouch *authViewController = [[GTMOAuth2ViewControllerTouch alloc] initWithScope:kGTLAuthScopeDrive clientID:kClientID clientSecret:kClientSecret keychainItemName:kKeychainItemName delegate:self finishedSelector:finishedSelector]; [self.fileManagementViewController presentModalViewController:authViewController animated:YES]; } // Action executed after finishing the Authentication - (void)viewController:(GTMOAuth2ViewControllerTouch *)viewController finishedWithAuth:(GTMOAuth2Authentication *)auth error:(NSError *)error { [self.fileManagementViewController dismissModalViewControllerAnimated:YES]; if (error == nil) { [self isAuthorizedWithAuthentication:auth]; } } - (void)isAuthorizedWithAuthentication:(GTMOAuth2Authentication *)auth { [[self driveService] setAuthorizer:auth]; self.isAuthorized = YES; [self loadDriveFiles]; } ``` so what wrong ??

Original source

Related problems