2016-07-13 2 views
1

Я пишу приложение, в котором пользователи делятся определенными файлами через Dropbox. Я использую API REST. Допустим, что файл имеет общий доступ к B. Я знаю, что A может совместно использовать файл, добавляя B в качестве члена в файл (add_file_member) и что B может проверять файлы, совместно используемые им в list_received_files. Но я не могу найти способ, которым B может видеть, кто поделился файлом. Кажется разумным иметь доступ к этой информации. Есть ли способ получить идентификатор учетной записи или информацию о дисплее для пользователя A с точки зрения B?Как получить информацию о владельце совместного использования Dropbox через API?

ответ

0

Объект SharedFileMetadata, который был возвращен /sharing/list_received_files, не включает эту информацию, но я обязательно передам это как запрос функции.

Однако вы можете использовать /sharing/list_file_members, чтобы отобразить список разделяемых файлов, а также их уровень доступа (например, владелец, редактор и т. Д.).

+0

Благодарим за отправку по запросу. Но когда я пытаюсь/shared/list_file_members с B, я получаю access_error/no_permission/response. Возможно, я не установил правильные разрешения для файла для B. –

+0

Да, откройте файл '' SharingFileAccessError' '(https://www.dropbox.com/developers/documentation/http/documentation#sharing-list_file_members) для получения дополнительной информации о различных 'access_error'. – Greg

+0

Да, я понимаю, что B не имеет права на list_file_members, когда это разрешения являются зрителями. Но я не могу сделать его редактором или владельцем через add_file_member. Когда я пытаюсь установить его как владельца, я получаю \t Ошибка: 400 Ошибка при вызове функции API «share/add_file_member»: не удается добавить участника с уровнем доступа «владелец». и в редакторе \t Ошибка: 500 –

0

Пример для C# Dropbox SDK.

public async Task<string> GetSharedFileOwnerID(Dropbox.Api.Files.Metadata data, Dropbox.Api.DropboxClient DropboxClient) 
    { 
     string owner = ""; 

     var file = data.AsFile; 
     if ((file.HasExplicitSharedMembers ?? false) || (file.SharingInfo != null)) 
     { 
      // search the real file owner 
      var list = await DropboxClient.Sharing.ListFileMembersAsync(file.Id); 
      var list_continue = false; 
      do 
      { 
       var item = list.Users.First(i => i.AccessType.IsOwner); 
       if (item != null) 
       { 
        owner = item.User.AccountId; 
        break; 
       } 

       list_continue = (list.Cursor != null); 
       if (list_continue) 
       { 
        list = await DropboxClient.Sharing.ListFileMembersContinueAsync(list.Cursor); 
       } 
      } 
      while (list_continue); 
     } 

     return owner; 
    } 

    public async Task<string> GetSharedFoldeOwnerID(Dropbox.Api.Files.Metadata data, Dropbox.Api.DropboxClient DropboxClient) 
    { 
     string owner = ""; 

     var folder = data.AsFolder; 
     if (folder.SharedFolderId != null) 
     { 
      // search the real folder owner 
      var list = await DropboxClient.Sharing.ListFolderMembersAsync(folder.SharedFolderId); 
      var list_continue = false; 
      do 
      { 
       var item = list.Users.First(i => i.AccessType.IsOwner); 
       if (item != null) 
       { 
        owner = item.User.AccountId; 
        break; 
       } 

       list_continue = (list.Cursor != null); 
       if (list_continue) 
       { 
        list = await DropboxClient.Sharing.ListFolderMembersContinueAsync(list.Cursor); 
       } 
      } 
      while (list_continue); 
     } 

     return owner; 
    } 

C# Dropbox SDK - пакет NuGet. Используйте Install-Package Dropbox.Api для установки.

Смежные вопросы