如何通过JavaScript API匿名访问(不登录)公共共享的OneDrive文件夹?

时间:2019-04-18 17:20:52

标签: javascript onedrive

我有一个带有公共共享文件夹(只读)的OneDrive业务帐户。在网站中,我想访问该共享文件夹中的文件,而不会提示用户登录(即不进行身份验证)。

我尝试将OneDrive API Endpoint的请求格式设置为:

share_url = "{sharing_url_string}";
var b64 = btoa(share_url);
if (b64[b64.length - 1] === "=")
    b64 = b64.substring(0, b64.length - 1);
var share_id = "u!" + b64.replace(/\//g, "_").replace(/\+/g, "-");
var req_url = "https://{server}/_api/v2.0/shares/" + share_id + "/driveItem?$expand=children"

其中{sharing_url_string}是从OneDrive的Web UI复制的公共共享字符串,而{server}是企业OneDrive服务器(例如,organization-my.sharepoint.com / personal / user_organization_com)

但是,我收到错误代码=“ unauthenticated”和消息=“未验证调用方”。

有趣的是,如果我在一个选项卡中登录OneDrive并将req_url复制/粘贴到新选项卡中,那么它似乎可以正常工作。

有什么想法为什么即使我公开共享了文件夹也似乎仍需要身份验证?

更新: 我认为这与获取访问令牌有关。根据{{​​3}},您可以在没有用户的情况下获得访问权限,但仍然需要使用已注册的应用程序进行身份验证。

我没有应用,只有一个公共共享文件夹的链接。使用Personal OneDrive帐户似乎可以做到这一点(请参阅Microsoft Graph API)。 Business OneDrive帐户是否有其他区别(不可能)?

更新2: 似乎不可能-再次查看其this answered question,在“备注”下方的底部说:“对于OneDrive for Business和SharePoint,Shares API始终需要身份验证,不能用于访问无需用户上下文即可匿名共享内容。”

0 个答案:

没有答案