当前位置: 首页 > 知识库问答 >
问题:

上传时权限代码403不足

吴俊晤
2023-03-14

使用Quickstart应用程序iOS我能够让Google Drive浏览文件和文件夹、显示图标和缩略图以及下载文件。但是,在上传时,我会遇到以下错误:

发生错误:错误域=com.google.GTLRErrorObjectDomain代码=403“权限不足”用户信息={GTLRStructuredError=GTLRErrorObject 0x61800024ff90:{消息:“权限不足”错误:[1]代码:403},NSLocalizedDescription=权限不足}

从这里和谷歌论坛上的评论来看,我似乎需要使用驱动器范围,但我不知道如何做到这一点。以下是登录的回调:

- (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);
    }
}];

共有1个答案

郦良才
2023-03-14

该问题是在登录谷歌时获得许可的。请检查您在登录期间提供的范围。

GIDSignIn* signIn = [GIDSignIn sharedInstance];
signIn.delegate = self;
signIn.uiDelegate = self;
signIn.scopes = [NSArray arrayWithObjects:kGTLRAuthScopeDrive, nil];

更改:

kGTLRAuthScopeDriveReadonly --> kGTLRAuthScopeDrive

我将其设置为kGTLRAuthScopeDriveReadonly,并得到了相同的错误。只要用代码检查一下就可以了。

 类似资料:
  • 我正在尝试使用服务帐户将文件上载到google drive,但我遇到了如下错误 (403)权限不足错误 尽管从驱动器中提取文件列表工作正常。 我在论坛上回顾了类似的问题,并尝试了一些建议,但似乎什么都不起作用。 代码有什么问题吗?

  • 从Gmail的电子邮件附件上载到Google Drive: 朋友们大家好,如果我删除文件目录中的token.pickle和token_drive.pickle文件(这些文件是与google cloud分开创建的)并运行代码: ”ResumableUploadError: 这似乎是Gmail和Drive同时身份验证的问题,因为media\u body和file\u元数据返回一个值,但我无法解决这个问

  • 好的,正如标题所建议的谷歌分析API问题。。。 null null Analytics Google API错误403:“用户没有任何Google Analytics帐户” Google Analytics API:“用户对此帐户没有足够的权限。” 但仍然无法让它工作。我添加了范围,如下所示: 现在,我有我试图查询的视图id(profile):code46034120/code>,所以我得到了服务

  • 我正在尝试从Google-Analytics访问数据。我正在遵循指南,并且能够对我的用户进行G授权,并从OAuth获得代码。 当我试图从GA访问数据时,我只得到403个不够的权限。我是否必须将我在Google API控制台中的项目连接到我的分析项目?我该怎么做?还是有什么其他原因让我得到403不够的权限回来? 我正在用Python和Django做这件事,而且我已经打开了我的API控制台的Analy

  • 我按照谷歌云SQLSDK中的说明导入数据。 但当我使用命令更改信息时: 我收到以下错误 如何纠正此故障?

  • 在使用Python创建存储桶时,我面临着这个问题。它清楚地表明我没有足够的权限,但我并没有犯错误。 我使用以下设置创建了一个实例:默认服务号、使用默认范围的Cloud API默认访问。 这是我收到的错误的回溯: