我正在开发一个outlook addin。它基于JS,使用OAuth2对用户进行身份验证。我正在使用poupp窗口打开授权页面,如google,azure ......并且在成功登录后我将其关闭。要返回应用程序,我在弹出窗口的父窗口上注册了一个回调函数,可以通过window.opener
属性访问。一切都很好,但我想支持移动设备。
要通过OWA for Devices应用程序运行这种插件,可以通过Play商店下载。
问题是window.opener
属性始终为null。所以我不能回电话申请。
有没有其他方法如何回调应用程序?如何访问弹出窗口的父窗口?
答案 0 :(得分:1)
解决该问题的正确方法是通过WebSockets。您可以确保将凭据发布到单个客户端。在您的网络插件中,启动套接字
加载项 - 客户端Javascript应如下所示:
var socket = io('http://localhost');
var email = Office.context.mailbox.userProfile.email;
socket.on('oauth_providerName_'+email, function(data){
// Callback when you receive the credential data.
});
// Pop the user to the OAuth frame
将用户从OAuth体验重定向回您的网站后
网站 - 客户端Javascript
var socket = io('http://localhost');
var email = Office.context.mailbox.userProfile.email;
socket.emit('oauth_cred_providerName_'+email, {credentials});
服务器 - 根据您选择的语言,您将凭据数据通过套接字传递给加载项客户端。
理想情况下,这里有3个组件: