0

そのため、2 人のユーザーがそれぞれの 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 "The operation could not be completed. (com.google.HTTPStatus error 404.)"

ここで何が間違っていますか?パーミッションの問題なら、なぜメタデータを取得できるのですか?

これは iOS アプリ用であり、両方のファイルが作成され、公式のクライアント API (rev 353) を使用してアプリからアップロードされたことに注意してください。

4

1 に答える 1