ne peut pas download le file de google drive dans ios

Je suis très nouveau dans le développement d'IOS, je développe une application dans laquelle je veux download un file de Google Drive (pdf, doxc, doc et xlxs) et qui sera envoyé pour l'envoyer à notre server.

D'abord, je l'ai installé dans le file pod en utilisant

pod 'GoogleAPIClient/Drive', '~> 1.0.2' pod 'GTMOAuth2', '~> 1.1.0' 

Deuxièmement, j'ai créé un projet dans Google Developer Console avec l'ID du bundle et j'ai obtenu l'identifiant du client, je l'ai sauvegardé dans mon projet.

Lorsque l'user clique sur le button de sélection de file

 -(IBAction)onclickfileFromDrive:(id)sender { self.service = [[GTLServiceDrive alloc] init]; self.service.authorizer = [GTMOAuth2ViewControllerTouch authForGoogleFromKeychainForName:kKeychainItemName clientID:kClientID clientSecret:nil]; NSLog(@"service reply%hhd",self.service.authorizer.canAuthorize); if (!self.service.authorizer.canAuthorize) { [self presentViewController:[self createAuthController] animated:YES completion:nil]; } else { [self fetchFiles]; } } - (GTMOAuth2ViewControllerTouch *)createAuthController { GTMOAuth2ViewControllerTouch *authController; NSArray *scopes = [NSArray arrayWithObjects:kGTLAuthScopeDrive, nil]; authController = [[GTMOAuth2ViewControllerTouch alloc] initWithScope:[scopes componentsJoinedBySsortingng:@" "] clientID:kClientID clientSecret:nil keychainItemName:kKeychainItemName delegate:self finishedSelector:@selector(viewController:finishedWithAuth:error:)]; return authController; } - (void)viewController:(GTMOAuth2ViewControllerTouch *)viewController finishedWithAuth:(GTMOAuth2Authentication *)authResult error:(NSError *)error { if (error != nil) { [self showAlert:@"Authentication Error" message:error.localizedDescription]; self.service.authorizer = nil; } else { self.service.authorizer = authResult; [self dismissViewControllerAnimated:YES completion:nil]; } self.service.authorizer = [GTMOAuth2ViewControllerTouch authForGoogleFromKeychainForName:kKeychainItemName clientID:kClientID clientSecret:nil]; NSLog(@"service reply%hhd",self.service.authorizer.canAuthorize); if (self.service.authorizer.canAuthorize) { [self fetchFiles]; } } 

Le process de connection fonctionne bien ici je reçois un jeton d'access et un jeton d'actualisation

pendant que j'essaye de download un file

  - (void)fetchFiles { GTLQueryDrive *query =[GTLQueryDrive queryForFilesList]; query.q = @"mimeType ='application/pdf' or mimeType ='text/plain' or mimeType ='application/msword' or mimeType ='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' or mimeType = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document'"; [self.service executeQuery:query delegate:self didFinishSelector:@selector(displayResultWithTicket:finishedWithObject:error:)]; } - (void)displayResultWithTicket:(GTLServiceTicket *)ticket finishedWithObject:(GTLDriveFileList *)response error:(NSError *)error { if (error == nil) { NSMutableSsortingng *filesSsortingng = [[NSMutableSsortingng alloc] init]; if (response.files.count > 0) { for (GTLDriveFile *file in response.files) { [filesSsortingng appendFormat:@"%@ (%@)\n", file.name, file.identifier]; NSSsortingng *url = [NSSsortingng ssortingngWithFormat:@"https://www.googleapis.com/drive/v3/files/%@?key=%@", file.identifier,kClientID]; GTMSessionFetcher *fetcher = [_service.fetcherService fetcherWithURLSsortingng:url]; [fetcher beginFetchWithCompletionHandler:^(NSData *datav, NSError *error) { if (error == nil) { NSLog(@" file web link%@",file.webViewLink); NSLog(@"file extension%@",file.fileExtension); NSLog(@"Resortingeved file content%@",datav); NSSsortingng *prefixSsortingng = @"EMR File"; NSSsortingng *guid = [[NSProcessInfo processInfo] globallyUniqueSsortingng] ; NSSsortingng *uniqueFileName = [NSSsortingng ssortingngWithFormat:@"%@_%@", prefixSsortingng, guid]; NSSsortingng *filePath = [[NSSsortingng alloc]init]; /***************** save the file in document directory ***********************/ if (datav!=nil) { NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); //Get the docs directory NSSsortingng *documentsDirectoryPath = [paths objectAtIndex:0]; NSSsortingng *folderPath = [documentsDirectoryPath ssortingngByAppendingPathComponent:@"emrFiles"]; // subDirectory if (![[NSFileManager defaultManager] fileExistsAtPath:folderPath]) [[NSFileManager defaultManager] createDirectoryAtPath:folderPath withIntermediateDirectories:NO atsortingbutes:nil error:nil]; //Add the FileName to FilePath filePath = [folderPath ssortingngByAppendingPathComponent:[uniqueFileName ssortingngByAppendingFormat:@".%@",file.fileExtension]]; //Write the file to documents directory [datav writeToFile:filePath atomically:YES]; } } else { NSLog(@"An error occurred: %@", error.localizedDescription); } }]; } } else { [filesSsortingng appendSsortingng:@"No files found."]; } } else { [self showAlert:@"Error" message:error.localizedDescription]; } } 

les détails du file comme

 NSLog(@" file web link%@",file.webViewLink); NSLog(@"file extension%@",file.fileExtension); file.fileExtension 

Ceux-ci obtiennent null dans tout le time

Cependant, je reçois de la valeur pour

 file.name file.identifier 

Enfin si j'essaye de download un file en utilisant cette URL

 NSSsortingng *url = [NSSsortingng ssortingngWithFormat:@"https://www.googleapis.com/drive/v3/files/%@?key=%@", file.identifier,kClientID]; 

et

 NSSsortingng *url = [NSSsortingng ssortingngWithFormat:@"https://www.googleapis.com/drive/v3/files/%@?key=My API key from google console", myfile.identifier]; 

Je reçois nsdata très petit contenu

 Printing description of datav: 

<7b0a2022 6b696e64 223a2022 64726976 65236669 6c65222c 0a202269 64223a20 22304236 6a6e576c 46497868 434f566e 6c586546 4a496344 526d596d 68694e44 6c735432 557a516b 7057566c 70716431 5246222c 0a20226e 616d6522 3a202253 41544859 412e646f 6378222c 0a20226d 696d6554 79706522 3a202261 70706c69 63617469 6f6e2f76 6e642e6f 70656e78 6d6c666f 726d6174 732d6f66 66696365 646f6375 6d656e74 2e776f72 6470726f 63657373 696e676d 6c2e646f 63756d65 6e74220a 7d0a>

En raison de l'obtention de la valeur nulle de l'extension de file, j'ai essayé de donner une extension statique et enregistré dans le directory et essayer de le voir et je reçois cette erreur

 “ File_B85DABFF-BCA5-4B5E-8FDC-59D2907F0509-1053-000003B0E6E4C9A9.docx” can't be opened for some reason. 

Je ne sais pas ce qui me manque, j'ai cherché plus mais ne pouvais pas aider s'il vous plaît quelqu'un m'aider sur ce

Merci d'avance