Google oauth身份验证在Office 365插件的桌面环境中不起作用

问题描述

我们已经使用Office对话框API开发了Office 365 Word加载项。我们正在尝试通过Google OAuth 2.0身份验证对用户进行身份验证。

工作流程基本上是这样的:

1-我们将oauth2网址(“ https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=CLIENT_ID&redirect_uri=REDIRECT_URI&scope=openid%20profile%20email&state=STATE”作为参数传递给Office) .context.ui.displayDialogAsync

2-用户完成身份验证过程后,对话框将重定向到我们的后端,在此处我们将代码交换为令牌

3-后端使用令牌重定向到我们

4-我们拦截答案,并将其通过Office.context.ui.messageParent(msg)发送回任务窗格

这适用于插件的浏览器内部署,但在桌面部署上表现出奇怪的行为。

对话框随即打开,指向正确的oauth2网址(如上所述),但显示空白页面。

我们发现的是,如果我们省略了请求的范围参数,那么该请求成功的前提是我们收到了响应,而不是完全失败;我们收到一个错误状态页面,指出我们缺少必需的参数范围。

我们传递的范围是(openid%20profile%20email),并且我们尝试了编码的每种组合,使用“ +”而不是“”,并且在与之相关的基础上,我们得到的响应大致相同分隔符(这是推测)。

无论如何,当我们通过请求传递作用域时,似乎无法在oauth网址上访问google。

“ dialogCallback”的定义:

function openOauthDialog(oauth_provider) {
  Office.context.ui.displayDialogAsync(
    authURL(oauth_provider),// Google Oauth2 URL
    { height: 80,width: 60,promptBeforeOpen: false },dialogCallback);
}

最后一页的定义:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
    <meta name="viewport" content="width=device-width,initial-scale=1" />
  </head>
  <body>
    <script type="text/javascript" src="https://appsforoffice.microsoft.com/lib/1/hosted/office.js"></script>
    <script>
      Office.onReady(info => {
        const msg = JSON.stringify({
          type: 'oauth_callback',params: {
            url: window.location.href
          }
        });
        Office.context.ui.messageParent(msg);
      });
    </script>
  </body>
</html>

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...