oauth2.0 chrome扩展关闭后launchWebAuthFlow窗口保持打开状态

bybem2ql  于 2023-04-19  发布在  其他
关注(0)|答案(1)|浏览(98)

我使用chrome.identity.launchWebAuthFlow从ReactJS中的MS图形API获取令牌。
如果扩展弹出窗口由于某种原因关闭,chrome.identity启动的认证窗口仍然打开-我不希望这种行为。
除此之外,由于某种原因,auth窗口和扩展弹出窗口之间的关闭事件似乎是链接的-当我关闭auth窗口时,扩展也会关闭,这也会停止任何进一步的代码运行。
我如何阻止这种情况发生?我怀疑这些问题源于同一个问题。

更新:

1.将API调用和launchWebAuthFlow移动到持久服务工作进程中
1.更改了我的async/await调用,以便在关闭扩展之前必须等待
我正在考虑在 chrome bug报告网站上创建为issue?我真的不确定是什么导致了这个问题。

j2qf4p5b

j2qf4p5b1#

在没有看到您的代码的情况下,很难说是什么原因导致了第一个auth窗口未关闭的问题。
您是否正在处理扩展窗口上的错误?
需要注意的是,如果扩展窗口中出现错误,可能不会立即显现,并且可能会阻止auth窗口关闭。您需要在父窗口中处理它,如下所示:

chrome.identity.launchWebAuthFlow({
  url: 'https://login.microsoftonline.com/common/oauth2/v2.0/authorize',
  interactive: true,
}, (redirectUrl) => {
  if (chrome.runtime.lastError || !redirectUrl) {
    // Handle error
  } else {
    // Handle successful authentication
  }
});

相关问题