如何通过API获取有关Dropbox共享文件所有者的信息?

时间:2016-07-13 15:52:30

标签: dropbox dropbox-api

我正在编写一个应用程序,用户通过Dropbox共享特定文件。我正在使用REST API。让我们说A共享一个文件到B.我知道A可以通过将B作为成员添加到文件(add_file_member)来共享文件,并且B可以通过list_received_files检查与他共享的文件。但我找不到B可以看到谁共享文件的方式。访问此信息似乎是合理的。有没有办法从B角度为用户A获取一些帐户ID或显示信息?

2 个答案:

答案 0 :(得分:0)

/sharing/list_received_files返回的SharedFileMetadata对象不包含此信息,但我确保将此信息作为功能请求传递。

但是,您可以使用/sharing/list_file_members列出共享文件的成员,以及他们的访问级别(例如,所有者,编辑器等)。

答案 1 :(得分: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进行安装。