Office.context.ui.messageParent在Outlook 2016 for Mac中是否失效?

13
我正在使用新的Office-JS API开发Outlook插件,在构建身份验证流程时,我发现在Outlook 2016 for Mac上,对话框系统似乎无法正常工作。
需要澄清的是,我们正在使用Office Insider Fast Track版本,因为它对Office-JS API提供了更好的支持。
我已经进行了几次迭代(大多数在Windows客户端和Mac和Win上的Web客户端中都可以正常工作),但都没有成功。该场景如下:
  1. 列出项目
  2. 在Outlook中打开任务窗格。
  3. 点击登录按钮
  4. 一个指向我们认证门户网站的新窗口会打开。
  5. 用户进行登录。
  6. 在完成身份验证后,窗口将重定向到Office插件范围内的页面,并通过回调调用父框架以获取身份验证令牌,然后可以进一步处理。
步骤1到5在所有平台上都能正常工作,但第6步在Outlook for Mac上无法正常工作。最初,这个流程是使用本机js window.open和window.postMessage api构建的。如上所述,这在除Outlook Mac外的所有地方都起作用,其中API似乎忽略了窗口选项,而是在任何打开的浏览器中打开URL并从未设置子窗口引用(window.open的结果为null)。
在失败之后,我按照在SO上找到的建议使用Office功能displayDialogAsync和messageParent。经过一些初步的障碍,这也在除Outlook Mac外的所有平台上设置和工作。
由于Mac Outlook中没有开发工具或JS控制台支持,我按照此处找到的建议Howto: Outlook 2016 for Mac - Debugging/View Console Logs in Outlook Add-in设置Vorlon以尝试获取一些上下文,并添加了许多日志点以尝试获得一些上下文。不幸的是,尽管Vorlon将我的认证着陆页面视为客户端,并看到Office界面,但我的所有控制台输出都没有呈现,这使它看起来好像JS根本没有运行。
在这一点上,我不确定接下来应该尝试什么。有人遇到过这个问题吗?或者在Outlook 2016 for Mac客户端上实现过这个功能吗?
澄清上下文:
  • 所有身份验证页面都列在清单的AppDomains部分中。
  • 虽然初始版本直接指向我们的认证服务(这在非Mac上有效),但当前版本首先打开范围内的预认证页面,然后重定向到认证服务。
  • Office-JS API阻止警报,防止其用于显示有用的信息。
  • 通过此应用程序的所有版本都可在Windows的Outlook 2016和Win和Mac的OWA上进行身份验证。
谢谢。

听起来你做得很对。如果你还没有阅读过这篇文章的话,你可能想要看一下:https://dev.office.com/docs/add-ins/develop/dialog-api-in-office-add-ins。此外,我们还有一篇关于在Mac上使用Vorlon的最新文章:https://dev.office.com/docs/add-ins/testing/debug-office-add-ins-on-ipad-and-mac。 - Rick Kirkham
同时确保调用messageParent方法的页面域名与调用displayDialogAsync方法的宿主页面域名完全相同。 - Rick Kirkham
感谢提供清除缓存的方法链接,这对以后很有用。但是,在这里它并没有起到作用。认证回调页面的域与插件相同。我将尝试使用上面的简单脚本替换其中的所有脚本,看看是否能运行。至于对话框窗口,在对话框中右键单击会出现返回和重新加载选项,与工作页面相同。Outlook 版本为 15.33(170308)。 - Ava
我也想说,我在MacOS的Outlook和iOS的Outlook上也遇到了同样的问题。会话已正确设置,但postMessage事件未被处理。 - djlumley
偶然发现了这个SO线程并在Outlook for Mac(版本15.36)上遇到了同样的问题。 Office.EventType.DialogMessageReceived没有被处理,但是Office.EventType.DialogEventReceived似乎正常工作。 相同的代码在Windows上的Outlook上可以运行。 - Cliff F
显示剩余9条评论
2个回答

3

这个Outlook Mac的问题在几个月前已经修复了。如果有人在最近的Outlook Mac版本中仍然遇到此问题,请回复并提供版本号。


@Bᴜᴅɪ 我不太确定这个应该被删除;“几个月前已经修复了Outlook Mac中的这个问题”看起来像是对问题的回答。 - NobodyNada
1
@NobodyNada 嗯...这是那种我觉得不需要成为答案,而应该是评论的边缘性评论之一...我会删除我的评论。 - budi
1
我们正在完全按照@Ava的方式进行操作(我们不使用window.open和window.postMessage,而是使用displayDialogAsync和messageParent),并且遇到了“API似乎忽略了窗口选项,只是在任何打开的浏览器中打开了新标签页”的确切问题。而且,messageParent无法将令牌从浏览器选项卡发送回Outlook。我们正在使用版本16.13.1(180523)。这个DialogAPI在Mac上又出问题了吗? - CodingFanSteve

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接