Всем привет!
Разрабатываю веб приложение на ReactJS, и сейчас пытаюсь сделать авторизацию на сайте через ВК. Хотел для этого использовать
fetch(). Собственно, нужно повторить
этот процесс.
Вот код скрипта авторизации
export function vklogin() {
var url = getLoginURL();
console.log("LOGIN TO VK CALLED", url);
fetch(url, { mode: 'no-cors', method: 'get', cache: 'no-cache' });
}
function getLoginURL() {
var url = 'https://oauth.vk.com/authorize?';
url += 'client_id=' + CLIENT_ID + '&';
url += 'display=page&';
url += 'redirect_uri=' + REDIRECT_URI + '&';
url += 'response_type=code&';
url += 'scope=' + PERMISSIONS.join(",") + '&';
url += 'state=vk&';
url += 'v=' + API_VERSION;
return url;
}
После вызова метода vklogin, в консоли я вижу правильно сформированную ссылку. Если перейти по ней просто из браузера, то он сразу же переадресуется на адрес содержащий code и state=vk.
То есть если в методе vklogin, fetch() заменить на
window.location.href = url;
То все отлично работает. Браузер переадресуется и дальше я могу уже слать код на сервер и там получить access_token.
Но вот fetch() никак не приводит к переадресации. Не происходит вообще ничего.
Если добавить к fetch then
fetch().then(function(response){
console.log("THEN", response.blob());
}).catch(function(error) {
console.log("ERROR");
})
сработает блок then. То есть вызов-таки происходит.
Что я делаю не так?
п.с. не хотел использовать window.location.href, потому что не могу отловить момент перехода по url содержащим code и state. Да и вообще мне это кажется каким-то костылем