Я использую Auth0 для выполнения аутентификации в моем приложении React.
После перенаправления по умолчанию, которое Auth0 выполняет после получения информации, мне нужно проанализировать возвращаемый хеш, а затем использовать некоторые из возвращенных всохраните токен авторизации в хранилище для других задач позже. Однако эта функция, которая обрабатывает сохранение authToken, происходит в обратном вызове parseHash (функция auth0).
Как мне дождаться завершения handleLogin () (функции, вызываемой в обратном вызове), прежде чем перейти кдругие задачи? Я не могу сделать parseHash () асинхронным, так как у меня нет к нему реального доступа.
Root.tsx
`if (this.props.location.hash) {
this.props.authClient.parseHash(
{ hash: this.props.location.hash },
(err, authResult) => handleLogin(err, authResult, this.props.dispatch)
);
}
}`
handleLogin.ts
`export const handleLogin = (
err: Auth0ParseHashError | null,
authResult: Auth0DecodedHash | null,
dispatch: Dispatch
) => {
if (authResult) {
const userId = authResult.idTokenPayload.sub;
dispatch(
setAuthToken({
token: {
accessToken: authResult.idToken,
userId
}
})
);
}
};`
Этоинформация, которая предоставляется о parseHash () из Auth0
`parseHash(
options: ParseHashOptions,
callback: Auth0Callback<Auth0DecodedHash | null, Auth0ParseHashError>
): void;`
`Decodes the id_token and verifies the nonce.
@param callback: function(err, {payload, transaction})`