Dropbox API,如何查看每个团队成员的文件夹权限?

问题描述 投票:0回答:1

我对使用Dropbox API并不陌生,我想访问每个团队成员的文件夹权限并将其放入数据库,但是我在哪里找不到此信息很麻烦。我能够访问每个成员的文件夹,并且可以看到每个文件夹的名称,但是看不到用户具有的每个文件夹的权限。我该怎么办?

这是我到目前为止的内容:

public MainPage()
{
     this.InitializeComponent();
     var task = Task.Run((Func<Task>)MainPage.Run);
     task.Wait();
}


static async Task Run()
{
      using (DropboxTeamClient DBTeamClient = new DropboxTeamClient("MY ACCESS KEY"))
      {
            //get all the dropbox members
            var members = await DBTeamClient.Team.MembersListAsync();
            //loop through all members ordered by email alphabetical
            foreach (var member in members.Members.OrderBy(a => a.Profile.Email))
            {
                 //get each user
                 var userClient = DBTeamClient.AsMember(member.Profile.TeamMemberId);
                 //get each user's file information
                 var list = await userClient.Files.ListFolderAsync(string.Empty);
                 //loop through the list of file and show permissions on folders
                 foreach (var item in list.Entries.OrderBy(b => b.PathDisplay))
                 {
                     //only display folder information
                     if (item.IsFolder)
                     {
                         //find out the user's permissions to this folder here?
                         //then I will output user information and permissions to a db
                     }
                 }
            }
      }
}

我是用错误的方式处理吗?任何指导表示赞赏,在此先感谢!

c# dropbox dropbox-api
1个回答
0
投票

感谢Greg的评论并在Dropbox上发布,我能够解决我的问题。这是他的解决方案:

“当使用这样的FilesUserRoutes.ListFolderAsync列出文件和文件夹时,您将列出成员的Dropbox文件夹的内容,其中将包括共享文件夹(它们在其中具有特定的权限级别)以及私有文件夹(其中没有特定的权限级别,因为它们只是他们的文件夹。)对于共享文件夹,将设置返回的FolderMetadata.SharingInfo,但在该文件夹中不包含有关该用户的权限级别的信息。方式,请确保同时实现ListFolderContinueAsync,以确保在使用ListFolderAsync时可以检索所有结果。有关更多信息,请查看ListFolderAsync文档。]

相反,如果要列出用户有权访问的共享文件夹,包括每个文件夹的访问级别,则应使用SharingUserRoutes.ListFoldersAsync。同样,请确保也实现了SharingUserRoutes.ListFoldersContinueAsync,因为此接口也是分页的。返回的每个SharedFolderMetadata都将列出用户的AccessType和权限。

这是一个小例子:

var actionsToCheck = new Dropbox.Api.Sharing.FolderAction[] { Dropbox.Api.Sharing.FolderAction.EditContents.Instance, Dropbox.Api.Sharing.FolderAction.InviteEditor.Instance };
var list = await userClient.Sharing.ListFoldersAsync(actions: actionsToCheck);  // actions can optionally be supplied to check the permissions the user has for specific actions

foreach (var item in list.Entries)
{
    Console.WriteLine(item.SharedFolderId);
    Console.WriteLine(item.PathLower);  // only set if the folder is mounted
    Console.WriteLine(item.AccessType);
    Console.WriteLine(item.Permissions);
}

// and so on, iterating over pages from userClient.Sharing.ListFoldersContinueAsync if list.Cursor is set

希望这会有所帮助!“

我希望其他人像我一样有用。

© www.soinside.com 2019 - 2024. All rights reserved.