[英]How to retrieve SharePoint Share Links using CSOM
我目前正在开发一个程序,它将所选文件上传到 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
如果我将 go 转换为 SharePoint 并手动检索它(程序正确生成链接),我可以检索上面的链接,但这违背了我的程序的目的。 该程序应该从我公司的域内自动上传和链接检索文件。
我不想要第一个链接,因为只有我域内的人才能使用它访问文件/文件夹。 第二个链接允许任何被授予访问权限(通过 email 地址)的人访问文件/文件夹。
我目前正在使用此处的代码检索第一个链接: 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
我在上面找到的所有示例都导致错误的链接。
如果目前尚不清楚,我不是在寻找匿名链接或如何创建共享链接(因为我已经有了这个工作),我在寻找将出现在这里的链接
在随机尝试一切之后,我设法找到了解决方案。 你可以做的如下:
首先,按照我之前的方式创建共享链接:
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);
这导致了我正在寻找的正确链接。 我确实和微软的一些人谈过这个问题,所以,感谢微软告诉我这是不可能的!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.