2017-09-15 209 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 

回答

相关问题