2017-09-15 207 views
0

我目前正在嘗試使用IOS的谷歌驅動器API來創建一個文件夾,將一個文件放在文件夾中,然後共享該文件。創建文件夾,並將文件放入文件夾中,但共享功能不能。當我登錄到我共享該文件的電子郵件地址時,它不會顯示。有人能幫我弄清楚在下面的Objective-c代碼中會出現什麼問題。谷歌驅動器SDK共享文件

該方法被調用的順序是initSetup創建文件夾的位置,然後在initsetup中調用uploadToFolder,在uploadToFolder中一個文件被共享。

#import "userSetUp.h" 
#import <GoogleSignIn/GoogleSignIn.h> 
@import GoogleAPIClientForREST; 


@implementation userSetUp 
NSString *folderID; 
-(id) initWithDriveService:(GTLRDriveService *)driveService{ 
self = [ super init]; 
if(self){ 
    self.driveService = driveService; 
} 
return self; 
} 
- (void) initSetup{ 



GTLRDrive_File *metadata = [GTLRDrive_File object]; 
metadata.name = @"AName"; 
metadata.mimeType = @"application/vnd.google-apps.folder"; 
GTLRDriveQuery_FilesCreate *query = [GTLRDriveQuery_FilesCreate queryWithObject:metadata 
                   uploadParameters:nil]; 
query.fields = @"id"; 
[_driveService executeQuery:query completionHandler:^(GTLRServiceTicket *ticket, 
                GTLRDrive_File *file, 
                NSError *error) { 
    if (error == nil) { 
     folderID = file.identifier; 
     //[self shareToDrive:file.identifier]; 
     //printf("the folder id is" + file.identifier) 
     [self uploadToFolder: file.identifier]; 
     NSLog(@" FOLDER File ID %@", file.identifier); 
    } else { 
     NSLog(@"An error occurred: %@", error); 
    } 
}]; 




} 
- (void) uploadToFolder:(NSString *) folderId { 


NSString *filePath = [[NSBundle mainBundle] pathForResource:@"apple" ofType:@"jpg"]; 
NSData *fileData = [NSData dataWithContentsOfFile:filePath]; 
GTLRDrive_File *metadata = [GTLRDrive_File object]; 
metadata.name = @"apple.jpg"; 

//metadata.mimeType = @"application/vnd.google-apps.document"; 
metadata.parents = [NSArray arrayWithObject:folderId]; 

GTLRUploadParameters *uploadParameters = [GTLRUploadParameters uploadParametersWithData:fileData 
                       MIMEType:@"image/jpeg"]; 
uploadParameters.shouldUploadWithSingleRequest = TRUE; 
GTLRDriveQuery_FilesCreate *query = [GTLRDriveQuery_FilesCreate queryWithObject:metadata 
                   uploadParameters:uploadParameters]; 
query.fields = @"id"; 
[_driveService executeQuery:query completionHandler:^(GTLRServiceTicket *ticket, 
                GTLRDrive_File *file, 
                NSError *error) { 
    if (error == nil) { 
     /** 
     * 
     *This is where the file id of the file gets sent to be shared 
     * 
     */ 
     [self shareToDrive:file.identifier]; 
     NSLog(@"File ID %@", file.identifier); 
    } else { 
     NSLog(@"An error occurred: %@", error); 
    } 
}]; 
printf("uploaded image to folder"); 
} 
- (void) shareToDrive:(NSString *) fileId{ 
GTLRBatchQuery *batchQuery = [GTLRBatchQuery batchQuery]; 

GTLRDrive_Permission *userPermission = [GTLRDrive_Permission object]; 
userPermission.type = @"user"; 
userPermission.role = @"reader"; 
userPermission.emailAddress = @"[email protected]"; 
GTLRDriveQuery_PermissionsCreate *createUserPermission = 
[GTLRDriveQuery_PermissionsCreate queryWithObject:userPermission 
              fileId:fileId]; 
createUserPermission.fields = @"id"; 
createUserPermission.completionBlock = ^(GTLRServiceTicket *ticket, 
             GTLRDrive_Permission *permission, 
             NSError *error) { 
    if (error == nil) { 
     printf("we out here"); 
     NSLog(@"Permisson ID: %@", permission.identifier); 
    } else { 
     //printf("oh no an error!"); 
     NSLog(@"An error occurred: %@", error); 
    } 

}; 
[batchQuery addQuery:createUserPermission]; 
printf("file shared"); 
} 
@end 

回答

相關問題