OneDrive - 使用 Rest API 访问共享 webURL 指定的文件夹

OneDrive - Using Rest API to access a folder specified by a shared webURL

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

这个 returns 一个 link 看起来像:https://1drv.ms/u/s!...pZqIns

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

如果重要的话...这不是针对 App 文件夹本身的。

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

根据我的测试,当我们为一个文件创建shareLink时,我们可以得到这个文件的shareLink。

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

1.Encoding 使用以下逻辑的 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.Using 如下API获取共享项:

GET /shares/{shareIdOrUrl}/driveItem

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

这API将return有关共享文件的所有信息。

更详细的可以参考this document.