Похоже, что ха sh искажен JSON. В то время как это можно было бы разобрать, добавив {
слева, добавив "
s вокруг символов слова перед :
и JSON.parse
-ing it:
// const { hash } = window.location;
// const badJSON = '{' + hash.slice(1);
// now, you'll have:
const badJSON = '{' + 'access_token: "accessToken", refresh_token: "refreshToken"}';
const json = badJSON.replace(/\w+(?=:)/g, '"$&"');
const obj = JSON.parse(json);
console.log(obj.access_token);
console.log(obj.refresh_token);
Это очень неудобно и является решением проблемы X / Y. Было бы гораздо лучше исправить все, что генерирует URL, чтобы его формат был в стандартном формате, чтобы вы могли проанализировать его с помощью URLSearchParams. Например, URL-адрес должен быть примерно таким:
http://localhost:3000/?access_token=accessToken&refresh_token=refreshToken
И тогда его можно очень легко проанализировать:
const url = 'http://localhost:3000/?access_token=accessToken&refresh_token=refreshToken';
const params = new URLSearchParams(url.match(/\?.*/)[0]);
// in your real code, the above can be replaced with:
// const params = new URLSearchParams(window.location.search);
console.log(params.get('access_token'));