【问题标题】:Office JS API pass OAuth token from host to dialog in Outlook Add-inOffice JS API 将 OAuth 令牌从主机传递到 Outlook 加载项中的对话框
【发布时间】:2018-01-22 12:43:32
【问题描述】:

我目前正在努力解决如何将 OAuth 令牌从 Outlook O365 中的父页面安全地传递到对话窗口的安全困境。根据 Microsoft documentation 的说法,只有两种方法可以实现:

  • 本地存储
  • 查询参数

我不明白为什么微软有一个方法(*)用于从对话框到父页面而不是从父页面到对话框?

* 来自documentation

dialog.addEventHandler(Office.EventType.DialogMessageReceived, processMessage); dialog.addEventHandler(Office.EventType.DialogEventReceived, processMessage);

所以我的问题是:

  • 有什么方法可以将 OAuth 令牌从父页面传递到与 Office JS 的内部方法的对话?
  • 为什么微软只开发了一种父页面和对话框之间的通信方式?

编辑:

我在 Outlook 中将父页面称为“新会议”窗口,将对话框称为 iFrame (Office.context.ui.displayDialogAsync())。单击插件按钮时,我已跳过任务窗格步骤并直接启动对话框。我的意图是将 OAuth(承载)令牌从父页面(因为用户已经被验证可以访问 O365 邮箱)发送到对话框。

正如 Rick 所说,数据可以通过 localStorage 或查询参数从父级传递到对话框。但我的问题是为什么 Office JS Api 缺少从父级到对话框的通信方法(当相反的方式有方法时)。

【问题讨论】:

    标签: oauth-2.0 office365 outlook-addin office-js


    【解决方案1】:

    需要区分三个角色:对话框、父页面(通常在任务窗格中)和 Office 主机应用程序(例如 Excel、Word 等)。您问题的当前措辞使您难以辨别您在谈论哪两个演员。父页面可以将事物(包括令牌(如果需要))传递给带有查询参数或本地存储的对话框。但是通常您会使用对话框来获取访问令牌并将令牌从另一个方向传递,从对话框到父页面。您可以使用messageParent API 执行此操作。

    当您在问题中提到“主机”时,您是在谈论父页面(可能在任务窗格中)吗?

    编辑:

    好的。我想我现在明白了这个问题。您要求 Office.JS 中的 API 可以在父页面中调用并将信息发送到 PREVIOUSLY OPENED 对话框。我们已经收到了这方面的请求,您可以对请求进行投票here on Office Developer User Voice。但是,我无法给出这样一个 API 何时可用的时间表。同时,我知道从父页面与已打开的对话框进行通信的唯一方法是使用 LocalStorage。搜索“如何使用本地存储在 Windows 之间进行通信?”您将找到有关执行此操作的技术的信息。

    【讨论】:

    • 感谢您的重写,但我仍然在这里感到困惑。你说“数据可以通过 localStorage 或查询参数从父级传递到对话框。但我的问题是为什么 Office JS Api 缺少从父级到对话框的通信方法”第一句话说有两种方式从父级到对话框进行通信.第二句话抱怨没有办法从父母到对话进行交流。这看起来很矛盾。
    • 我们试试这个方法。有一个事件处理程序Office.EventType.DialogMessageReceived 当我从对话框接收数据到父窗口时触发。为什么会有像Office.EventType.DialogMessageReceived 这样的事件处理程序来触发事件以将数据从父级发送到对话框。我想跳过中间的人(localStorage,参数 - 如何传递 OAuth 令牌的两种方法都显示了实际的字符串)并直接发送数据。也许我错过了一些东西,但我在互联网上花了一整天试图找出答案。
    【解决方案2】:

    我知道这是一个老问题,但现在也许有人在读这个。

    关于您关于从父页面到对话框的通信方式的问题:您可以使用 Office API 的messageChild 方法将信息从父页面传递到对话框,如here 所述。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-19
      • 1970-01-01
      • 1970-01-01
      • 2019-10-27
      • 1970-01-01
      相关资源
      最近更新 更多