VKWebAppGetEmail
VKWebAppGetEmail показывает окно с запросом доступа к адресу электронной почты пользователя и в случае одобрения возвращает этот адрес.
Совет. Если вашему мини-приложению требуется запросить не только адрес электронной почты, но и номер телефона, вызовите карточку контактов.
Пример
bridge.send('VKWebAppGetEmail')
.then((data) => {
if (data) {
// Электронная почта пользователя
console.log(data.email);
}
})
.catch((error) => {
// Ошибка
console.log(error);
});
Платформы
Android, iOS, Web
Параметры
—
Результат
Проверить результат можно:
- •
Используя объект
Promise, который возвращается вызовомbridge.send(...). - •
С помощью событий
VKWebAppGetEmailResultиVKWebAppGetEmailFailed.
Подробнее о проверке результатов при вызовах VK Bridge.
Возможные ошибки:
- •
This action cannot be performed in the background, если мини-приложение запущено в фоновом режиме. - •
User denied, если пользователь запретил доступ к адресу электронной почты.
Объект Promise
Если обращение к платформе прошло успешно, управление будет передано в then-обработчик объекта Promise. В качестве ответа платформа возвращает объект со следующими полями:
Поле | Тип | Описание |
|---|---|---|
email | string | Адрес электронной почты пользователя. |
sign | string | Подпись полученных данных. |
Если при обращении к платформе произошла ошибка, управление передаётся в метод catch. В качестве ответа платформа возвращает объект с информацией об ошибке, общий для всех событий VK Bridge.
События
VKWebAppGetEmailResult
Сигнализирует, что доступ к электронной почте получен. В обработчик события на стороне пользователя передаются следующие данные:
{
detail: {
type: "VKWebAppGetEmailResult",
data: {
email: "[email protected]",
sign: "lY_KLjwfRmx9X1_z4iowRz1pTKHL98PW-14XURLWKYI"
}
}
}
Передаваемый объект подобен объекту, возвращаемому при успешном выполнении промиса.
VKWebAppGetEmailFailed
Информирует об ошибке, которая произошла при взаимодействии с платформой.
В обработчик события на стороне пользователя передаётся объект с информацией об ошибке, общий для всех методов VK Bridge.
Пример обработки событий
Подробнее — в разделе Обработка результата.
Вычисление подписи
Для подписи последовательно объединяются значения:
- •Идентификатор мини-приложения
app_id. - •Защищённый ключ
api_secret. - •Идентификатор пользователя
user_id. - •Пара
$field_name.$field_value, вернувшаяся в событии.
От полученной после объединения строки вычисляется криптографический хеш SHA256 в байтовом представлении, затем хеш кодируется с помощью алгоритма Base64 Encode.
Пример формирования подписи события на PHP, где app_id = 7770000, api_secret = W7kVvxVxZ4, user_id = 162447, field_name = email, field_value = [email protected]:
$sign = rtrim(strtr(base64_encode(hash('sha256', '[email protected]', true)), '+/', '-_'), '=');Особенности использования
Событие VKWebAppGetEmail предназначено для разового получения адреса электронной почты. Платформа ВКонтакте не сохраняет ответ пользователя о доступе к данным профиля. При повторном вызове события платформа снова запросит разрешение на доступ.
Такой подход, с одной стороны, помогает вашему приложению всегда работать с актуальными данными, а с другой — предотвращает скрытый сбор информации о пользователях, который могут вести недобросовестные разработчики.
Если вашему приложению нужно повторно использовать электронную почту пользователя, запросите её заново либо сохраните адрес на стороне приложения и предоставьте возможность изменения по запросу. Например, ваше приложение может использовать такой экран:
Пример экрана приложения
Пользователь может продолжить работу с сохранённым адресом или нажать на адрес для обновления. Нажатие вызовет событие VKWebAppGetEmail, при этом запрос на доступ будет выглядеть для пользователя ожидаемым, а не раздражительным.
Песочница
Материалы по теме
- •
- •