我对使用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
}
}
}
}
}
我是用错误的方式处理吗?任何指导表示赞赏,在此先感谢!
感谢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
希望这会有所帮助!“
我希望其他人像我一样有用。