【发布时间】:2018-01-24 02:26:35
【问题描述】:
使用适用于 iOS 的 Quickstart 应用程序,我能够让 Google Drive 浏览文件和文件夹、显示图标和缩略图以及下载文件。但是,在上传时出现以下错误:
发生错误:Error Domain=com.google.GTLRErrorObjectDomain Code=403 "Insufficient Permission" UserInfo={GTLRStructuredError=GTLRErrorObject 0x61800024ff90: {message:"Insufficient Permission" 错误:[1] code:403}, NSLocalizedDescription=权限不足}
从这里的 cmets 和 Google 论坛上看,我似乎需要使用 Drive 范围,但我不知道该怎么做。这是登录时的回调:
- (void)signIn:(GIDSignIn *)signIn didSignInForUser:(GIDGoogleUser *)user withError:(NSError *)error {
if (error != nil) {
[self showAlert:@"Authentication Error" message:error.localizedDescription];
_driveService.authorizer = nil;
} else {
self.signInButton.hidden = true;
_driveService.authorizer = user.authentication.fetcherAuthorizer;
[self signedIn];
[self listFilesFromFolderID:[self initialFolder]];
}
}
然后,上传文件我这样做:
_driveFile = [GTLRDrive_File object];
_driveFile.name = [NSString stringWithFormat:@"%@.%@", _filenameToSave, _fileExtension];
_driveFile.mimeType = _fileMimeType;
NSString *parentRef = @"root";
if ( self.currentFolder )
parentRef = [self.currentFolder.identifier copy];
_driveFile.parents = @[ parentRef ];
GTLRUploadParameters *uploadParameters = [GTLRUploadParameters uploadParametersWithData:fileData
MIMEType:_driveFile.mimeType];
uploadParameters.shouldUploadWithSingleRequest = TRUE;
GTLRDriveQuery_FilesCreate *query = [GTLRDriveQuery_FilesCreate queryWithObject:_driveFile
uploadParameters:uploadParameters];
query.fields = @"id";
[self.driveService executeQuery:query completionHandler:^(GTLRServiceTicket *ticket,
GTLRDrive_File *file,
NSError *error) {
if (error == nil) {
NSLog(@"File ID %@", file.identifier);
} else {
NSLog(@"An error occurred: %@", error);
}
}];
【问题讨论】:
标签: objective-c google-drive-api