-
Notifications
You must be signed in to change notification settings - Fork 33
Open
Description
Описание
VKWebAppGetAuthToken возвращает clientError при разблокировке экрана смартфона, если запрос находится в обработчике VKWebAppViewRestore
Версия vk-bridge
2.15.9
Платформа
Android, IOS
Браузер и версия
No response
Шаги воспроизведения
- Сделать useEffect с пустыми зависимостями, в коллбэке которого подписаться на VKWebAppViewRestore с помощью bridge.subscribe
- Внутри обработчика VKWebAppViewRestore передать запрос VKWebAppGetAuthToken bridgeGetAuthToken (в моем приложении баг воспроизводится со scope: "groups")
export async function bridgeGetAuthToken(scope: string) {
try {
const params = new URLSearchParams(window.location.search);
const app_id = Number(getVKAppId({ params }));
const response = bridge.send("VKWebAppGetAuthToken", {
app_id: app_id,
scope: scope,
});
const token = await response;
return token;
} catch (error) {
console.error(error);
return {
access_token: "",
scope: scope,
};
}
}- Запустить приложение в VKMiniApps на смартфоне (iOS, Android), дождаться появления содержимого приложения
- Заблокировать экран устройства
- Разблокировать экран устройства (пункты 4-5 может потребоваться повторить 2-3 раза, но чаще всего воспроизводится и с первого)
Ожидаемое поведение
Возвращение валидного токена для указанного скоупа
Фактическое поведение
Возвращает ошибку client_error с кодом 13 (custom error).
Скриншоты
No response
Приложение
Код, который вызвал ошибку
useEffect(() => {
async function requestAuthToken() {
try {
const params = new URLSearchParams(window.location.search);
const app_id = Number(params.get("vk_app_id"));
const response = bridge.send("VKWebAppGetAuthToken", {
app_id: app_id,
scope: "groups",
});
const token = await response;
return token;
} catch (error) {
console.error(error);
return {
access_token: "",
scope: "groups",
};
}
}
bridge.subscribe((e) => {
if (e.detail.type === "VKWebAppViewRestore") {
requestAuthToken();
}
});
}, []);Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels