Need to see if your shared folder is taking up space on your dropbox 👨💻? Find out how to check here.
Forum Discussion
demo22
8 years agoExplorer | Level 3
Unable to use the add_file_member API (HTTP) with C#
I am trying to use this API but when inputting the parameters by creating anonymous properties, thanks to the "dot" in the ".tag" in "members", I cannot create that property as it will ask for an id...
Greg-DB
Dropbox Community Moderator
8 years agoThanks for the feedback! I'll be sure to pass it along to the team. I can't offer help with Nemiro in particular, but if you're not using the official SDK, the expected use pattern would be that you would build the JSON to send in the request body, e.g., using Json.NET or the like, where you can use arbitrary key names. For instance, you would use `JsonConvert.SerializeObject` and pass in a native Dictionary with any key names, where ".tag" would work.
demo22
8 years agoExplorer | Level 3
Thank you for your update. It is ok not to use Nemiro but can you make a simple sample function for this API in C# to make it more specific? Because I have tried lots of ways to insert the parameters but still no luck. For most of the cases I got is the error "Error in call to API function "sharing/add_file_member": request body: expected object, got string" or "Error in call to API function "sharing/add_file_member": request body: expected object, got list". Thank you for your help.
- Greg-DB8 years ago
Dropbox Community Moderator
Here's an example of one way you might do this:
WebRequest request = WebRequest.Create("https://api.dropboxapi.com/2/sharing/add_folder_member"); request.Method = "POST"; request.Headers.Add("Authorization", "Bearer " + accessToken); request.ContentType = "application/json"; Stream requestBodyStream = request.GetRequestStream(); JsonSerializerSettings serializerSettings = new JsonSerializerSettings(); serializerSettings.StringEscapeHandling = StringEscapeHandling.EscapeNonAscii; var memberSelector = new Dictionary<String, String>() { { ".tag", "email" }, { "email", "email@example.com" } }; var accessLevel = new Dictionary<String, String>() { { ".tag", "editor" } }; var member = new Dictionary<String, Dictionary<String, String>>() { { "member", memberSelector }, { "access_level", accessLevel } }; var members = new List<Dictionary<String, Dictionary<String, String>>>() { member }; var addFolderMemberArgs = new Dictionary<String, dynamic> { { "shared_folder_id", "248930168" }, { "members", members } }; var addFolderMemberArgsString = JsonConvert.SerializeObject(addFolderMemberArgs, serializerSettings).Replace("\x7F", "\\u007f"); var addFolderMemberArgsBytes = Encoding.ASCII.GetBytes(addFolderMemberArgsString); requestBodyStream.Write(addFolderMemberArgsBytes, 0, addFolderMemberArgsBytes.Length); requestBodyStream.Close(); WebResponse response = null; try { response = request.GetResponse(); } catch (WebException e) { Console.WriteLine(e.Status); Console.WriteLine(e.Message); response = e.Response; } finally { Stream responseStream = response.GetResponseStream(); StreamReader responseReader = new StreamReader(responseStream); Console.WriteLine(responseReader.ReadToEnd()); responseReader.Close(); response.Close(); }- demo228 years agoExplorer | Level 3
Thank you for your detail example, it looks more complicated than I expected but it can send the parameters correctly. However, the result I get is an error like this:
"error_summary": "access_error/invalid_id/.."
I read the doc and I know I got the wrong folder ID, which I got from the result of this API:
https://api.dropboxapi.com/2/files/list_folder
The example of the ID from the result is like this:
"id": "id:a4ayc_80_OEAAAAAAAAAXw"
So if this ID is wrong, then which ID should I get and how can I get it through the API?
Thank you so much for your help.
- Greg-DB8 years ago
Dropbox Community Moderator
That ID with "id:" is the file/folder ID, but the add_folder_member requires the "shared folder ID", which is an integer. You can get it from /2/files/list_folder[/continue] in FolderMetadata.sharing_info.shared_folder_id, or /2/sharing/list_folders[/continue] or /2/sharing/check_share_job_status in SharedFolderMetadata.shared_folder_id.
About Dropbox API Support & Feedback
Find help with the Dropbox API from other developers.
The Dropbox Community team is active from Monday to Friday. We try to respond to you as soon as we can, usually within 2 hours.
If you need more help you can view your support options (expected response time for an email or ticket is 24 hours), or contact us on X, Facebook or Instagram.
For more info on available support options for your Dropbox plan, see this article.
If you found the answer to your question in this Community thread, please 'like' the post to say thanks and to let us know it was useful!