如何在具有动态 url 和子域的 Web 应用程序中使用 OneDrive 的选择器?

How do I use OneDrive's picker in a web application with dynamic url and subdomains?

我想将 Onedrive 文件选取器添加到我的 Web 应用程序中。但是我有一个与重定向相关的问题 url.

我的网站是一个软件即服务网络应用程序。我们有数百个客户,每个客户都在一个子域中。我想将文件选择器添加到多个页面。每个页面的 url 都会有所不同,因为它们是动态页面,它们在 url 上有一个 id。

像这样:

client1.mydomain.com/page/1 client1.mydomain.com/page/2 client2.mydomain.com/page/3 client2.mydomain.com/page/4 client3.mydomain.com/page/5

所以我们有无限数量的子域,每个子域都有无限数量的页面,其中 url 都是不同的。

另外,我在应用注册门户中可以设置的页面数量限制为 21。他选择器应该可用的地方有数千个。

解决方案?如何在具有动态 url 和多个子域的页面中使用 OneDrive 的选择器?

这是 OneDrive / OneDrive for Business 身份验证平台的限制。为了将文件选取器与特定于租户的 URL 一起使用,您需要做一些额外的工作。

基本上,您需要:

  1. 拥有一个域,您可以在其中托管提供文件选择器交互的单页应用程序 (SPA)。类似于 filepicker.myapp.com。在此页面上,您使用文件选择器 SDK 和您的应用程序 ID 进行身份验证,让用户选择一个文件,然后重定向回 filepicker.myapp.com 上的页面。您可以使用 openInNewWindow=false 属性 来确保 SPA 应用程序不会创建弹出窗口 window.
  2. 从那里,您可以从每个租户应用调用您的 SPA。您的租户应用程序创建一个新的弹出窗口 window,调用 SPA 应用程序,并使用 postMessage() 或查询字符串在您的租户应用程序和 SPA 之间进行通信。这是从租户应用程序到文件选择器 SPA 的传递,以及您的 SPA 将所选择文件的结果发送回您的租户应用程序的方法。

这绝对是一个痛点,我们正在研究如何使身份验证平台对于具有基于租户的 URL 但没有任何明确承诺的应用程序更加健壮更好可用。