При работе с VK ID API я получаю ошибку:
{error: 'Ошибка API: User authorization failed: access_token was given to another ip address'}
На локалхосте все работает замечательно. Для авторизации я использую готовый виджет:
if ('VKIDSDK' in window) {
const VKID = window.VKIDSDK;
VKID.Config.init({
app: 52559297,
redirectUrl: '<?= $site ?>/login/vk_callback.php',
responseMode: VKID.ConfigResponseMode.Callback,
source: VKID.ConfigSource.LOWCODE,
});
const oneTap = new VKID.OneTap();
oneTap.render({
container: document.currentScript.parentElement,
showAlternativeLogin: true,
styles: {
width: 40
}
})
.on(VKID.WidgetEvents.ERROR, vkidOnError)
.on(VKID.OneTapInternalEvents.LOGIN_SUCCESS, function (payload) {
const code = payload.code;
const deviceId = payload.device_id;
VKID.Auth.exchangeCode(code, deviceId)
.then(vkidOnSuccess)
.catch(vkidOnError);
});
function vkidOnSuccess(data) {
// Проверяем наличие access_token или id_token
if (data && data.access_token) {
const accessToken = data.access_token;
const idToken = data.id_token;
// Здесь вы можете использовать access_token для обращения к VK API или
// использовать idToken для расшифровки информации о пользователе
// Пример: Отправка Access Token на сервер для дальнейшей обработки
fetch(`<?= $site ?>/login/vk_callback.php`, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ access_token: accessToken })
})
.then(response => response.json())
.then(result => {
console.log('Server response:', result);
})
.catch(e => console.log('Ошибка при обработке ответа сервера:', e));
console.log('Получен access_token:', accessToken);
} else {
console.error('Неожиданные данные', data);
}
}
// Обработка ошибки
function vkidOnError(error) {
console.error('Ошибка при авторизации', error);
}
}
Также, я пробовал использовать
VKID.Auth.logout(access_token);