Angular 如何在Identity Server身份验证oidc客户端后关闭SignInPup()窗口

Angular 如何在Identity Server身份验证oidc客户端后关闭SignInPup()窗口,angular,identityserver4,openid-connect,Angular,Identityserver4,Openid Connect,我有一个Angular应用程序,我需要通过Identity Server 4对用户进行身份验证。我正在UserManager上使用SignInPup()方法。这是设计好的。当我启动登录时,它会打开弹出窗口和登录表单 登录成功,但它没有关闭弹出窗口,也没有将登录声明信息传递到“opener”窗口,而是在弹出窗口中加载post_Login_redirect_uri 我需要它关闭这个窗口,然后数据将可用于启动SigningPup的应用程序,而不是在弹出窗口中 而且,如果我手动关闭该窗口,数据仍然不会传

我有一个Angular应用程序,我需要通过Identity Server 4对用户进行身份验证。我正在UserManager上使用SignInPup()方法。这是设计好的。当我启动登录时,它会打开弹出窗口和登录表单

登录成功,但它没有关闭弹出窗口,也没有将登录声明信息传递到“opener”窗口,而是在弹出窗口中加载post_Login_redirect_uri

我需要它关闭这个窗口,然后数据将可用于启动SigningPup的应用程序,而不是在弹出窗口中

而且,如果我手动关闭该窗口,数据仍然不会传回主(弹出窗口的发起人)窗口。而是捕捉错误

我一直在研究,发现了一些关于如何做到这一点的帖子,但没有任何描述。我不认为编辑Identity Server登录代码来处理关闭弹出窗口是“正确”的方法

有人能帮忙吗

//THis launches popup and authentication is successful. 
startSigninPopup(){

this.mgr.signinPopup().then((user) =>{
  console.log(user);
  return user;
}).catch((error) => {
 // if manually closing the popup, I end up in catch with error.
  console.log(error)
})

}

这可能与使用弹出式重定向uri而不是登录后重定向uri一样简单。请参见

我有同样的问题,并在oidc客户端的github上的示例代码中找到了一条线索

在本示例中,SignInPup()重定向到一个只调用


这将关闭弹出窗口并成功解析来自父页面的承诺。

您能提供一个示例吗?