Показать сообщение отдельно
  #1 (permalink)  
Старый 29.06.2017, 08:38
Новичок на форуме
Отправить личное сообщение для caseyryan Посмотреть профиль Найти все сообщения от caseyryan
 
Регистрация: 29.06.2017
Сообщений: 2

Авторизация в ВК с помощью fetch()
Всем привет!
Разрабатываю веб приложение на 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. Да и вообще мне это кажется каким-то костылем
Ответить с цитированием