Chrome 扩展程序在调用 launchWebAuthFlow API 时使 Microsoft Edge 浏览器崩溃

Posted

技术标签:

【中文标题】Chrome 扩展程序在调用 launchWebAuthFlow API 时使 Microsoft Edge 浏览器崩溃【英文标题】:Chrome Extension crashes the Microsoft Edge browser while calling launchWebAuthFlow API 【发布时间】:2022-01-08 06:09:33 【问题描述】:

我们有一个在 Chromium edge 和 Chrome 浏览器上运行的 chrome 扩展程序。在今天之前它运行良好,但今天它在调用 API 后开始使 Microsoft Edge 崩溃,并且在调试时我们看到错误来自此 API:

https://developer.chrome.com/docs/extensions/reference/identity/#method-launchWebAuthFlow

我们使用此 API 进行身份验证,Microsoft 还声明我们可以使用此 API。以下消息来自 Microsoft 频道:

chrome.identity.getAuthToken - 作为替代方案,您可以使用 launchWebAuthFlow 获取 OAuth2 令牌以对用户进行身份验证。

问题仅出现在边缘浏览器中。 Edge 版本:96.0.1054.41(官方版本)(64 位) 我们还尝试降级边缘,但似乎没有任何效果。

我们使用 Google 和 Microsoft 登录,并且 launchwebauthflow 仅在 Microsoft 登录时失败,我们使用的身份验证 URI:https://login.microsoftonline.com/common/oauth2/authorize

我们正在传递所有必需的参数,并且调用是从后台脚本进行的。

【问题讨论】:

您使用的是哪个版本的 Edge?您提到它在今天之前正常工作。我建议您可以将 Edge 回滚到以前的版本,以测试是否是 Edge 本身的问题。只需参考此rollback doc。顺便问一下,这个问题是否也出现在 Chrome 中? 是的,所以 Edge 的版本是:96.0.1054.41(官方构建)(64 位),我们尝试了旧版本,甚至测试版,我们在 Chrome 和它工作得很好。我们使用谷歌和微软登录,谷歌登录工作正常,但微软却崩溃了 我们使用以下认证网址:login.microsoftonline.com/common/oauth2/authorize 我来自微软论坛上的帖子。对我来说,不仅是扩展,还有 Edge 浏览器本身随机崩溃。我附上帖子链接以便更好地描述我的问题:techcommunity.microsoft.com/t5/discussions/… @diridev,在我的情况下,一旦我们使用 launchWebAuthFlow API 发起登录调用,它就会使浏览器崩溃。 【参考方案1】:

我们终于改了调用,使用chrome.windows.create api发起认证请求

return await global.chrome.windows.create(
    focused: true,
    height : 800,
    width: 800,
    url: authURL
)

我们监听了 chrome 页面 URL 的变化,并从重定向 URI 中解析了令牌,并为 APIS 创建了一个本地令牌。

这里的 authurl 和我们用于 launchWebAuthFlow 的一样

【讨论】:

这更像是一种解决方法,而不是解决问题的方法 您似乎找到了替代解决方案。您可以在 48 小时后将您的答案标记为已接受的答案,此时可以标记。它可以在未来帮助其他社区成员解决类似的问题。感谢您的理解。 @diridev 是的,因为我们的客户无法使用 Microsoft 身份验证流程登录,因此我们不能闲着。我们必须提供替代解决方案。 我们不知道微软什么时候会解决这个问题。 @sobby01 是的,我明白了。我只需要指出让其他用户知道原始问题仍未解决。出于同样的原因,我不会将其标记为已接受的答案。

以上是关于Chrome 扩展程序在调用 launchWebAuthFlow API 时使 Microsoft Edge 浏览器崩溃的主要内容,如果未能解决你的问题,请参考以下文章

查看正在调用 chrome 扩展的哪些函数

如何从Chrome扩展程序中调用JS文件中的特定功能

Ajax 调用在 HTTPS 上被阻止 - Chrome 扩展

在chrome更新后,jQuery ajax调用无法从网页解码到utf-8字符集到Chrome扩展

ASP.NET Web API 在来自 Chrome 扩展的并发 AJAX 调用上崩溃

如何在Chrome扩展程序中测试可选权限?