我正在尝试将我的React Web应用程序从auth0-js 9.6.1升级到9.7.3。安装新库后,我的Slack登录流程不再起作用,它似乎在回调中中断了。
TypeError: Cannot create property '__enableIdPInitiatedLogin' on string '#access_token={token string}&token_type=Bearer&state={state string}'
我的parseHash
通话是:
this.auth0.parseHash(hash, (err, authResult) => {
if (authResult && authResult.idToken) {
AuthService.setToken(authResult.idToken); // JWT returned from Auth0;
// Redirect user to content.
const returnUrl = localStorage.getItem(Variables.RETURN_URL_KEY);
localStorage.removeItem(Variables.RETURN_URL_KEY);
returnUrl
? window.location.replace(returnUrl)
: window.location.replace("/");
} else if (err) {
console.log("Error with auth callback", err);
window.location.replace("https://foo.com"); // If auth fails, send user to home page.
}
}
这在9.6.1中可以正常工作,但在9.7.x中失败,而且我找不到任何会导致其开始失败的重大更改。有什么想法吗?
答案 0 :(得分:1)
我和您有同样的问题,所以我打开了一个ticket on the Auth0.js library github page.
这是我从开发人员那里得到的答复:
当时考虑到我们希望第一个参数是对象或回调函数,因此它在偶然的情况下工作(同样,在您的情况下该字符串也被忽略了)。
我们所有的文档都提到:
https://github.com/auth0/auth0.js#api
https://auth0.github.io/auth0.js/global.html#parseHash
https://auth0.com/docs/libraries/auth0js/v9#extract-the-authresult-and-get-user-info
对于您而言,最简单的解决方法是仅删除第一个参数,并仅保留回调。没有选项对象时,已经使用window.location.hash。
(重点是固定地雷)
我用this.auth.auth0.parseHash((err, result) => ...
测试了9.7.3,它的工作就像一个魅力。
我希望这会有所帮助!