使用iOS sdk将文件上传到Google云端硬盘

时间:2016-07-28 07:29:48

标签: ios objective-c iphone google-drive-api

在我当前的应用程序中,我正在尝试使用.textGoogle SDK for iOS文件上传到Google云端硬盘。但问题是每次我在Log中收到错误消息 Insufficient Permission ,所以如果有人遇到过这个或对此类错误有所了解,请帮助我

这是我的代码,

        GTLDriveFile *file = [GTLDriveFile object];
        file.descriptionProperty = @"Uploaded from the iOS app.";
        file.mimeType = @"text/*";
        file.name=@"MyTextFile";
        NSString *filePath = [[NSBundle mainBundle] pathForResource:@"myTestFile" ofType:@"txt"];

        GTLUploadParameters *uploadParameters = [GTLUploadParameters uploadParametersWithFileURL:[NSURL URLWithString:filePath] MIMEType:file.mimeType];


        GTLQueryDrive *query = [GTLQueryDrive queryForFilesCreateWithObject:file uploadParameters:uploadParameters];

        [self.service executeQuery:query completionHandler:^(GTLServiceTicket *ticket, id object, NSError *error) {
            if (error) {
                NSLog(@"Error: %@", error);
            }else{

            }
        }];

执行此操作时记录打印

意外回复数据(上传到错误的网址?) {"错误":{"代码":403,"消息":"权限不足""数据": [{"结构域":"全球""理由":" insufficientPermissions""消息":&#34 ;权限不足"}]}," id":" gtl_3"}

过早失败:上传状态:"最终"位置:(空)

1 个答案:

答案 0 :(得分:0)

我解决了这个问题

第一步

将您的范围更改为[kGTLAuthScopeDriveFile]

但是在第一步之后,我得到了同样的403错误

因为我手机中的APP的范围为[kGTLAuthScopeDriveMetadataReadonly]

第二步

重置我的应用程序或构建另一个模拟器

我认为首先使用范围readonly的auth密钥链是存在的,所以不写文件到谷歌驱动器

更改范围并重新验证后,它可以正常工作

如果您将kKeychainItemName的值更改为另一个,则可以使用新范围重新验证

谷歌在快速入门教程中说了

// If modifying these scopes, delete your previously saved credentials by
// resetting the iOS simulator or uninstall the app.
// private let scopes = [kGTLAuthScopeDriveFile]