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