0
現在、GoogleドライブAPIを使用してフォルダを作成し、フォルダにファイルを入れてからファイルを共有しようとしています。フォルダを作成し、そのフォルダにファイルを置くことはできますが、共有機能は動作しません。私がファイルを共有した電子メールアドレスにログオンすると、表示されません。誰かが、以下のObjective-cコードで問題がどこで発生するかを理解するのを助けてくれますか?Googleドライブ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