Google Drive API在iOS中下载Url 404

时间:2013-08-15 08:33:14

标签: ios google-drive-api

所以我试图允许两个用户交换每个用户在其Google云端硬盘中的文件。这涉及了解其他人的文件的ID并使用API​​调用来检索它。这两个文件都位于已与任何人/公共人员共享的文件夹中。

麻烦的是,当我执行下面的代码时,我发现每个用户只能使用与他们拥有的文件相对应的downloadUrl - 其他用户返回404.在这种情况下,“我的”或“他们的”取决于帐户我已登录。

    // _driveService and its authorizer setup elsewhere        

    // Retrieve the metadata then the actual data
    NSString *mine = @"0B4Pba9IBDsR3T1NVTC1XSGJTenc";
    NSString *theirs = @"0B4n9OyY8tqWpNlNaN1dUc3FsNG8";
    NSString *get = [NSString stringWithFormat:@"https://www.googleapis.com/drive/v2/files/%@",theirs];
    [_driveService fetchObjectWithURL:[NSURL URLWithString:get] completionHandler:^
     (GTLServiceTicket *ticket, GTLDriveFile *file, NSError *error)
     {
         if (error != nil)
             NSLog(@"Error retrieving metadata: %@", error);
         else
         {
             // Download the actual data
             GTMHTTPFetcher *fetcher = [_driveService.fetcherService fetcherWithURLString:file.downloadUrl];
             [fetcher beginFetchWithCompletionHandler:^
              (NSData *data, NSError *error)
              {
                  if (error != nil)
                      NSLog(@"Error retrieving actual data: %@", error);
                  else
                  {
                      NSString *content = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
                      NSLog(@"Content: %@", content);
                  }
              }];
         }
     }];
  

检索实际数据时出错:错误Domain = com.google.HTTPStatus Code = 404“无法完成操作。(com.google.HTTPStatus错误404。)”

我在这里做错了什么?如果它是权限的话,为什么我被允许获取元数据?

请注意,这适用于iOS应用,并且使用官方客户端API(rev 353)从应用创建和上传这两个文件。

1 个答案:

答案 0 :(得分:2)

是的,所以看起来魔鬼在我遗漏的细节中。在创建授权程序时,我提供的范围是kGTLAuthScopeDriveFile,这是示例中的默认值,当其他所有工作都正常工作时我忘了它。显然我需要使用kGTLAuthScopeDrive(差异被解释为here

这里的逻辑似乎有点瑕疵,我的意思是我不想访问其他不是用应用程序创建的文件,我只是想访问其他人使用应用程序创建的公共文件...... / p>