Ошибка несоответствия шаблона при совместном использовании папки с помощью Dropbox API
Я работаю над приложением Android, которое использует Dropbox Core SDK v3.0.3. При попытке поделиться папкой с другим участником постоянно появляется сообщение об ошибке. Код создает новую общую папку с указанным именем, но не добавляет никаких членов.
Это мой код:
List<AddMember> list = new ArrayList<AddMember>();
AddMember newMember = new AddMember(MemberSelector.email(clerkDbId), AccessLevel.EDITOR);
list.add(newMember);
ShareFolderLaunch sfl = dbxClient.sharing().shareFolder("/" + clerkName);
dbxClient.sharing().addFolderMember(sfl.getCompleteValue().toString(), list); //I am getting error here.
clerkName: имя общей папки
clerkDbId: идентификатор Dropbox, к которому я хочу предоставить доступ к вышеуказанной папке
Я попытался изменить первую строку на:
ArrayList<AddMember> list = new ArrayList<>();
Тем не менее я получаю ту же ошибку. Это ошибка, которую я получаю:
Строка "sharedFolderId" не соответствует шаблону java.lang.IllegalArgumentException: Строка "sharedFolderId" не соответствует шаблону в com.dropbox.core.v2.sharing.AddFolderMemberArg.(AddFolderMemberArg.java:50) в com.dropbox.core.v.sharing.AddFolderMemberArg.(AddFolderMemberArg.java:86) в com.dropbox.core.v2.sharing.DbxUserSharingRequests.addFolderMember(DbxUserSharingRequests.java:154) в com.dbapp.ashground FilesAApp. Java: 126) на com.dbapp.ashworth.adminapp.FilesActivity$3$1.doInBackground(FilesActivity.java:115) на android.os.AsyncTask$2.call(AsyncTask.java:295) на java.util.concurrent.FutureTask. выполнить (FutureTask.java:237) в java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) в java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.javaThlanutor at javaTh5g at at).run(Thread.java:818)
Может кто-нибудь сказать мне, что я здесь делаю не так?
1 ответ
Сообщение об ошибке указывает на то, что sharedFolderId
значение параметра, которое вы передаете addFolderMember
не является действительным идентификатором общей папки.
Вы проходите через весь SharedFolderMetadata
(как строка). Вместо этого вы должны просто получить идентификатор общей папки следующим образом:
sfl.getCompleteValue().getSharedFolderId();
Кстати при звонке shareFolder
, вы не гарантированно получите полную информацию немедленно. Вы должны использовать ShareFolderLaunch.isComplete
/ ShareFolderLaunch.isAsyncJobId
чтобы проверить, что вы получили обратно. Там больше информации в shareFolder documentation