Google OAuth弹窗取消回调

5
使用Google身份验证服务(GSI)时,我可以显示一个弹出窗口,要求用户连接他们的Google账户。 这个过程已经有了很好的文档记录,使用以下代码可以很好地实现:
const client = window.google.accounts.oauth2.initCodeClient({
  client_id: 'CLIENT_ID',
  scope: 'SCOPE',
  ux_mode: 'popup',
  callback: async (response) => {
    console.log('Response Google', response);
  },
});
client.requestCode();

然而,如果用户关闭弹出窗口,我希望做一些事情。 我在文档和在线示例中都找不到任何东西。 我尝试了intermediate_iframe_close_callbacknative_callback,但在关闭弹出窗口时都没有被调用。

那么,是否有可能? 我该怎么做?

谢谢。


2
有一个不错的解决方案,可以在窗口上添加一个焦点事件监听器:https://dev59.com/WMTra4cB1Zd3GeqP8npo#73485415 - Robert Desmond
2个回答

4

我认为回调函数的名称是"error_callback"。您可以在处理错误中找到详细信息。

const client = google.accounts.oauth2.initCodeClient({
  client_id: 'YOUR_GOOGLE_CLIENT_ID',
  scope: 'https://www.googleapis.com/auth/calendar.readonly',
  ux_mode: 'popup',
  callback: myCallback,
  error_callback: myErrorCallback  // You can do something when popup window closed
});

1
似乎这在当前版本的GSI中不起作用。
在旧版的gapi中它是有效的,如果弹出窗口被关闭,您将收到一个带有错误信息的响应:{error: "popup_closed_by_user"}。如此答案所述:Google SSO登录错误:"popup_closed_by_user" 希望添加#google-oauth标签可以让谷歌的某个人看到这个问题,并更新此脚本。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接