在OneDrive File Picker for Web Apps中支持多个域/子域

时间:2014-06-25 04:25:47

标签: onedrive

我们有一个CMS,可以为超过2000个学校网站提供支持。每个网站的管理站点都在相同的根域下,例如*.myadmin.com。我们正在努力在所有这些管理网站的多个网页上集成OneDrive File Picker

API设置中的Redirect URLs存在问题。我们尝试通过将Root domain设置为myadmin.comRedirect URLs:字段设置为https://myadmin.com。在JavaScript中,我们将文件选择器初始化为:

WL.init({
    client_id: window.OneDrive.clientId,
    redirect_uri: ''
});
WL.fileDialog({
    mode: "open",
    select: "single"
});

这导致弹出窗口说:

We're unable to complete your request. Microsoft account is experiencing technical problems. Please try again later.

在弹出窗口的地址栏中,还有一个错误说明(网址解码):

error_description=The provided value for the input parameter 'redirect_uri' is not valid. The expected value is 'https://login.live.com/oauth20_desktop.srf' or a URL which matches the redirect URI registered for this client application.

在API设置中设置特定网址(如https://subdomain.myadmin.com/homepage)可使Picker在 特定页面上工作,但不在其他网页上工作。看起来它正在寻找完全匹配。显然,对于使用OneDrive的每个页面创建单独的应用程序,这是不切实际的。

可以通过在API设置页面上禁用Enhanced redirection security来解决此问题。几周前我们创建了一个用于开发的应用程序,但被标记为已弃用。今天,当我们为生产创建一个新的应用程序时,它已不再存在,我认为现在已经为所有新应用程序启用了这个应用程序。

Dropbox Drop-ins Chooser也存在类似问题,但我们可以通过将myadmin.com设置为应用的域来解决问题。

这个问题有解决方法吗?

感谢您的帮助和建议。

3 个答案:

答案 0 :(得分:1)

我能让这个工作的唯一方法是

  1. 确保单个域上的确切单个网页已配置并适用于一个驱动器(运行OneDrive的网址需要在Microsoft account Developer Center中正确配置
  2. 然后在iframe中使用此页面(即使它是一个完全不同的域名)
  3. 然后使用postMessage将数据传递回父iframe以使用
  4. 工作副本(链接可能随时被删除) Testing OneDrive in an iframe

    其他相关网址

    1. browser support for postMessage
    2. Browser support for postMessage on stackoverflow
    3. postMessage documentation
    4. postMessage的一些示例用法

      1. example usage of postMessage
      2. another example of use of postMessage

答案 1 :(得分:-1)

只要所有重定向网址都在同一个子域中,您就可以添加多个重定向网址。需要明确指定每个重定向URL:

Redirect URLs screenshot

答案 2 :(得分:-1)

如果您先放置所需的根域,然后放置2个子域,则可以解决Microsoft开发人员控制台提及的错误。

添加3个entires: 1. domain.com 2. sub1.domain.com 3. sub2.domain.com