javascript - OAuth2认证js客户端

标签 javascript oauth-2.0 outlook-addin office-addins outlook-web-app

我正在开发一个 Outlook 插件。它是基于 JS 的,使用 OAuth2 来验证用户身份。我正在使用 poupp 窗口打开授权页面,例如 google、azure ...,成功登录后我将其关闭。要返回应用程序,我在弹出窗口的父窗口上注册了一个回调函数,可以通过 window.opener 属性访问该回调函数。一切工作正常,但我想支持移动设备。 可以通过 OWA for Devices 应用程序运行此类插件,该应用程序可以通过 Play 商店下载。 问题是 window.opener 属性始终为 null。所以我无法回拨应用程序。 还有其他方法可以回调应用程序吗?如何访问弹出窗口的父窗口?

最佳答案

解决该问题的正确方法是通过 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 个组件:

  1. 插件 Javascript,用于监听具有特定数据的凭证套接字(可以是 cookie guid 或电子邮件地址等唯一值)
  2. OAuth 完成后您将重定向的网页,它将通过套接字将凭据(访问 token /刷新 token )传递到服务器。 (您仍然可以将其托管为与您的加载项一起部署的页面,这里重要的是它应该有一个单独的 JS 文件)
  3. 服务器套接字,它将获取凭据并将其传递给加载项客户端。

关于javascript - OAuth2认证js客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42773148/

相关文章:

oauth-2.0 - 有没有办法更改 Postman OAuth 2 客户端凭据请求的内容类型?

c# - Outlook VSTO 加载项 C# 事件 - 一段时间后不再触发事件

c# - 如何从 Outlook 功能区上下文菜单中获取当前邮件项目

javascript - 循环数组属性和中断

javascript - 我们如何设置 DOM 中已加载图像的元素的背景图像?

javascript - 如何选择 3 个独特的数组?

azure - 生成不记名 token 时签名无效

python - 使用 Python apiclient 忙于调用 Google Calendar API v3 时出现 TypeError

c# - Outlook 加载项 : RibbonToggleButton Image changes only refreshes when outlook window becomes active

javascript - jQgrid:多列行标题