gpt4 book ai didi

reactjs - React keycloak TypeError : kc. updateToken(...).success 不是函数

转载 作者:行者123 更新时间:2023-12-03 13:26:19 26 4
gpt4 key购买 nike

我正在实现 keycloak。

这是我的 keycloak 初始化配置:

const token = localStorage.getItem('kc_token');
const refreshToken = localStorage.getItem('kc_refreshToken');

export const keycloakInitConfig = {
onLoad: 'login-required',
promiseType: 'native',
token,
refreshToken,
};

有时我会收到此错误

TypeError: kc.updateToken(...).success is not a function

如果有人可以帮助我,非常感谢。

更新1:

                        kc.updateToken(-1).success(function() {
kc.onAuthSuccess && kc.onAuthSuccess();
initPromise.setSuccess();
}).error(function() {
kc.onAuthError && kc.onAuthError();
if (initOptions.onLoad) {
onLoad();
} else {
initPromise.setError();
}
});

我在 node_modules 中有这个,我的 keycloak-js 版本是 6.0.0

更新2:

export const keycloakInitConfig = {
onLoad: 'login-required',
promiseType: 'native',
token,
refreshToken,
};

export const onKeycloakEvent = (store) => (event, error) => {
console.log('event?????', event);
if (event === 'onAuthSuccess') {
keycloak.loadUserProfile()
.then((userInfo) => {
store.dispatch({
type: actionTypes.SET_USER_INFO,
payload: { user: userInfo },
});
})
.catch((err) => {
console.log('loadUserProfile: ', err);

localStorage.removeItem('kc_token');
localStorage.removeItem('kc_idToken');
localStorage.removeItem('kc_refreshToken');

store.dispatch({
type: actionTypes.LOG_OUT,
});

keycloak.logout();
});
} else if (error) {
console.log('onKeycloakEvent', event, error);
}
};

export const onKeycloakTokens = (tokens) => {
localStorage.setItem('kc_token', tokens.token);
localStorage.setItem('kc_idToken', tokens.idToken);
localStorage.setItem('kc_refreshToken', tokens.refreshToken);
};

和KeycloakProvider

ReactDOM.render(
<KeycloakProvider
keycloak={keycloak}
initConfig={keycloakInitConfig}
onEvent={onKeycloakEvent(store)}
onTokens={onKeycloakTokens}
>
...
</KeycloakProvider>,
document.getElementById('root'),
);

最佳答案

您正在使用“旧”.success() 方法,但您已在 init 配置中使用 native Promise 类型 (promiseType: 'native') 进行配置。

使用标准 Promise 类型的标准 .then() 方法,就像我在这里的示例一样,它应该可以工作: https://github.com/dasniko/keycloak-reactjs-demo/blob/master/src/index.js#L48-L49

关于reactjs - React keycloak TypeError : kc. updateToken(...).success 不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58436689/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com