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.
我正在使用 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.