Я в настоящее время разрабатываю программу, которая загрузит выбранные файлы в определенную папку (и автоматически создавать папки, при необходимости) на SharePoint и дать доступ к конкретным пользователям на основе их электронных писем, используя SharePoint CSOM, однако я не могу получить ссылки для людей за пределами моего домена.

Например, с моим текущим кодом я получаю такие ссылки:

https://domain.sharepoint.com/:f:/r/sites/TestSite/Shared%20Documents/2019/11157/Test%20Upload?csf=1

Тем не менее, ссылка, которую я пытаюсь получить, похоже на следующее:

https://domain.sharepoint.com/:f:/s/TestSite/EmUDng-KzwxEtHKyJ9Okl0MBlS_z8gxGFl4UUjuGXHmR9w

Я могу получить ссылку, указанную выше, если я войду в SharePoint и получу ее вручную (программа правильно создает ссылки), но это противоречит цели моей программы. Программа должна автоматизировать загрузку и получение ссылок на файлы из домена моей компании.

Я не хочу первой ссылки, потому что только люди, которые находятся в моем домене, могут получить доступ к файлу / папке с ним. 2-я ссылка позволяет всем, кто получил доступ (по адресу электронной почты) для доступа к файлу / папке.

В настоящее время я получаю первую ссылку, используя код отсюда: https://www.c-sharpcorner.com/article/generating-sharing-links-report-and-removing-sharing-links-using-sharepoint-onli/ < / а>

Я также пробовал другие предложения, которые я нашел на stackexchange, таких как: https: // SharePoint. stackexchange.com/questions/91451/manage-links-for-shared-files.

Все примеры, которые я нашел, как приведенные выше, приводят к неправильным ссылкам.

Если в настоящее время не ясно, я не после анонимной ссылки или как создавать общие ссылки (как у меня уже есть эта работа), я после ссылки, которая появится здесь

0
Brade 25 Сен 2019 в 02:22

1 ответ

Лучший ответ

Мне удалось найти решение, просто попробовав все наугад. Вы можете сделать следующее:

Во-первых, создайте обмен ссылками так, как я был ранее:

SharingResult result = context.Web.ShareDocument(site,
                       email,
                       ExternalSharingDocumentOption.View,
                       false,
                       "Document Shared as test");

Затем с помощью переменной результата возьмите ссылку приглашения одного из приглашенных пользователей и затем измените ее, чтобы она работала для любого пользователя (как оказалось, конкретные ссылки одинаковы для всех пользователей, кроме параметра в конце)

string link = result.InvitedUsers.FirstOrDefault().
int index = link.IndexOf("?");
if (index > 0) link = link.Substring(0, index);

Это приводит к правильной ссылке, которую я искал. Я говорил с некоторыми людьми от Microsoft, спрашивая об этом, так что благодаря Microsoft за то, что сказал мне, что это было невозможно!

0
Brade 11 Дек 2019 в 05:05