首页 > 解决方案 > OneDrive - 使用 Rest API 访问由共享 webURL 指定的文件夹

问题描述

我正在使用https://graph.microsoft.com/v1.0端点,并使用以下方法获取文件夹的共享链接:/drive/special/approot:{SomePath}:/createLink

这将返回一个类似于以下内容的链接:https://1drv.ms/u/s!...pZqIns

稍后另一位用户将使用具有此 URL 的浏览器访问共享数据。没问题。但他们也想使用我的应用程序,它使用了其余的 API。如何将链接转换为 FileID,以便他们可以使用我的应用程序访问文件夹及其内容?

如果重要的话……这不适用于应用程序文件夹本身。

标签: microsoft-graph-apionedrive

解决方案


根据您的描述,我想您想通过转换 shareLink 来获取共享文件。

根据我的测试,当我们为文件创建 shareLink 时,我们可以获得该文件的 shareLink。

然后我们可以使用下面的步骤通过转换shareLink来获取文件信息。

1.使用以下逻辑对shareLink进行编码:

  1)First, use base64 encode the URL.
  2)Convert the base64 encoded result to unpadded base64url format by removing = characters from the end of the value, replacing / with _ and + with -.)
  3)Append u! to be beginning of the string.

例如,在 C# 中对 URL 进行编码:

string sharingUrl = "{your shareLink}";
string base64Value = System.Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(sharingUrl));
string encodedUrl = "u!" + base64Value.TrimEnd('=').Replace('/','_').Replace('+','-');

2.使用以下API获取共享项:

GET /shares/{shareIdOrUrl}/driveItem

'shareIdOrUrl' 参数是 step1 中的结果。

此 API 将返回有关共享文件的所有信息。

更详细的,我们可以参考这个文档


推荐阅读