microsoft-graph-api - OneDrive - 使用 Rest API 访问由共享 webURL 指定的文件夹
问题描述
我正在使用https://graph.microsoft.com/v1.0
端点,并使用以下方法获取文件夹的共享链接:/drive/special/approot:{SomePath}:/createLink
。
这将返回一个类似于以下内容的链接:https://1drv.ms/u/s!...pZqIns
稍后另一位用户将使用具有此 URL 的浏览器访问共享数据。没问题。但他们也想使用我的应用程序,它使用了其余的 API。如何将链接转换为 FileID,以便他们可以使用我的应用程序访问文件夹及其内容?
如果重要的话……这不适用于应用程序文件夹本身。
解决方案
根据您的描述,我想您想通过转换 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 将返回有关共享文件的所有信息。
更详细的,我们可以参考这个文档。
推荐阅读
- r - 如何将一周中每一天的平均每小时数据可视化为 R 中 7 天的 facet_wrap?
- orocommerce - 是否可以让用户使用相同的登录名向不同的客户下订单?
- android - 是否有必要在完成调用之前设置内容视图?
- sql - PostgreSQL - 使用 group by 子句创建一个 jsonb 数组
- node.js - 我们可以使用正斜杠在 nginx 上部署和访问具有相同端口号的多个 nodejs 应用程序吗?
- postgresql - 使用 heroku pg:pull 迁移数据库处于分离状态
- javascript - 如何使 html5 视频控件始终打开/显示。?
- r - 如何在维恩图中添加超过 6 组的计数值?
- java - 在 teamcity 中构建项目时,在 gradle 中央插件存储库中找不到 Org.springframework.boot 插件
- amazon-web-services - 即使未将 s3 存储桶指定为请求者付费,我是否可以为数据传输付费?