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