我认为这是与角度5.2.8相关的错误。 6。 角度5.2.7工作正常。 我创建一个ng5 branch并更新角度到最新的5.2.8和错误com! 任何人都可以指导我使用oidc-client-js进行角度5.2.8和更高版本的样本?
答案 0 :(得分:6)
它是由window.location.hash中的状态URI编码引起的。 对我来说,这解决了这个问题:
if (window.location.hash) {
window.location.hash = decodeURIComponent(window.location.hash);
// authorizedCallback returns wrong result when hash is URI encoded
this.oidcSecurityService.authorizedCallback();
} else {
this.oidcSecurityService.authorize();
}
答案 1 :(得分:0)
如果您正在像我这样自定义项目,而您的问题与哈希位置无关,请忽略它:
completeAuthentication(): Promise<void> {
return this.manager.signinRedirectCallback().then(user => {
this.user = user;
}).catch((err) => {});
}
答案 2 :(得分:0)
就我而言,删除回调页面上的response_mode: 'query'
实际上解决了该问题
这是我的回调页面:
<script src="https://cdnjs.cloudflare.com/ajax/libs/oidc-client/1.10.1/oidc-client.min.js"></script>
<script>
var config = {
userStore: new Oidc.WebStorageStateStore({ store: window.localStorage }),
// response_mode: 'query' <-- remove this
}
var mgr = new Oidc.UserManager(config)
mgr.signinRedirectCallback()
.then(_ => {
window.history.replaceState({}, window.document.title, window.localStorage.origin);
window.location.href = "/"
}, error => {
console.log(error)
})
</script>