微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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 举报,一经查实,本站将立刻删除。