Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Авторизация в ВК с помощью fetch() (https://javascript.ru/forum/misc/69506-avtorizaciya-v-vk-s-pomoshhyu-fetch.html)

caseyryan 29.06.2017 08:38

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

caseyryan 29.06.2017 10:38

Проблема решена. Видимо я просто не так понял работу fetch. Сделал через window.location.href, и просто проверяю параметры при загрузке сайта


Часовой пояс GMT +3, время: 19:59.