Перейти к основному содержимому

Рекомендации по аутентификации пользователей через WhatsApp | Документация для разработчиков

Рекомендации по аутентификации пользователей через WhatsApp

Обновлено: 21 ноября 2025 г

Безопасность

Для регистрации в WhatsApp пользователям необходимо указать свой номер телефона. В процессе регистрации WhatsApp проверяет, действительно ли пользователь использует этот номер телефона, отправляя 6-значный регистрационный код по SMS или телефону.
Для многих пользователей WhatsApp номер телефона останется тем же, что и при регистрации в WhatsApp. Однако WhatsApp не гарантирует сохранение права собственности на номер телефона после первоначальной регистрации, поэтому нет гарантии, что номер телефона и привязанная к нему учетная запись WhatsApp принадлежат одному и тому же человеку. В частности, поскольку номера телефонов используются повторно операторами мобильной связи, возможно, что если ваш пользователь в настоящее время владеет номером телефона и не использует WhatsApp, предыдущий владелец этого номера телефона все еще имеет доступ к привязанной к нему учетной записи WhatsApp .
Таким образом, в случаях, когда требуется аутентификация в конфиденциальных ситуациях, таких как восстановление учетной записи (где код, отправленный через WhatsApp, может быть единственным фактором аутентификации), номер телефона и привязанная к нему учетная запись WhatsApp не должны рассматриваться как взаимозаменяемые. В таких случаях могут применяться следующие рекомендации:
    Явная проверка того, что пользователь является владельцем учетной записи WhatsApp, как и в любом другом новом канале аутентификации, например, путем отправки первоначального одноразового пароля (OTP) и запроса на ввод этого пароля пользователем в вашем приложении во время регистрации или входа в систему.В дополнение к коду, отправленному через WhatsApp, предлагается дополнительная проверка для подтверждения личности пользователя.
    Первый метод позволяет использовать наши системы проверки смены личности в Cloud API для «привязки» учетной записи WhatsApp к учетной записи пользователя, гарантируя, что будущие сообщения будут доставляться только тому пользователю WhatsApp, который получил первоначальный OTP. Например, в Cloud API следует сохранить хэш идентификатора, полученный после отправки первоначального OTP, и (при условии успешной проверки) включить его во все последующие запросы на отправку сообщений. Такая настройка повысит безопасность по сравнению с SMS, поскольку доставка сообщений не удастся, если номер телефона будет использован повторно и новый владелец зарегистрируется в WhatsApp (коды OTP не будут случайно отправлены непреднамеренному получателю).
    Для борьбы с фишингом WhatsApp отключает пересылку сообщений аутентификации. Сообщения передаются с использованием сквозного шифрования между Cloud API и пользователем .
    WhatsApp не поддерживает и не может подтвердить безопасность неофициальных приложений . Нет гарантии, что аутентификация через WhatsApp безопасна для пользователей, использующих эти приложения.

    UX

    Сбор согласия

    В соответствии с политикой WhatsApp Business Messaging , для отправки сообщения пользователю WhatsApp необходимо получить его согласие. Распространенный вариант реализации — предоставление пользователям выбора каналов аутентификации (WhatsApp, электронная почта, SMS и т. д.), как показано в нашем примере приложения .

    Устранение проблем с доставкой сообщений

    Если вы наблюдаете проблемы, когда пользователи выбирают WhatsApp, но сообщения в итоге не доставляются, возможно, пользователи случайно выбирают WhatsApp, хотя на самом деле они не зарегистрированы в этой социальной сети. Чтобы это исправить, на Android можно проверить, установлен ли WhatsApp, и отображать только WhatsApp в этом случае.
    fun isWhatsAppAvailable ( context : Context ) { return isAppAvailable ( context , "com.whatsapp" ) || isAppAvailable ( context , "com.whatsapp.w4b" ) } fun isAppAvailable ( context : Context , packageName : String ) : Boolean { val intent = Intent ( ) intent.setPackage ( packageName ) intent.action = " com.whatsapp.otp.OTP_REQUESTED " val packageManager = context.packageManager val listActivities = packageManager.queryBroadcastReceivers ( intent , 0 ) return listActivities.isNotEmpty ( ) }
    Если вы по-прежнему сталкиваетесь с проблемами, когда пользователи выбирают WhatsApp, но сообщения в итоге не доставляются, возможно, номер телефона WhatsApp указан неверно. Это может быть связано с опечаткой пользователя или с тем, что приложение ошибочно считает номер телефона, указанный при первоначальной регистрации, совпадающим с номером телефона WhatsApp. Пользователи могут использовать один номер телефона для SMS, а другой — для WhatsApp, например, если у них несколько SIM-карт для поездок. Необходимо убедиться, что если WhatsApp выбран в качестве канала аутентификации, у пользователя есть возможность подтвердить свой номер телефона WhatsApp.
    Если сообщения доставляются, но вы наблюдаете более низкий, чем ожидалось, коэффициент конверсии в процессах аутентификации, рассмотрите возможность внедрения нашей более удобной функции «автозаполнения в одно касание» , доступной для Android.

    Поддерживаются все приложения

    Ваши пользователи, возможно, готовы получать сообщения через WhatsApp или приложение WhatsApp Business (или через оба). Если вы следуете нашему руководству по внедрению клиента для Android , ваши сообщения с функцией «автозаполнения в одно касание» должны работать с любой комбинацией установок, но мы рекомендуем протестировать эту функцию как в потребительском, так и в бизнес-приложении.

    Будьте готовы получить код от WhatsApp

    При интеграции с функцией «автозаполнения в одно касание» вы должны иметь возможность обрабатывать получение кода сразу после отправки подтверждения . WhatsApp отправит код сразу после его получения, независимо от того, какой экран отображается в данный момент в вашем приложении. Например, в ситуациях с плохим сетевым соединением вы можете получить код до того, как сможете загрузить экран ввода кода в вашем приложении. Для обработки таких случаев одним из вариантов является сохранение полученного кода таким образом, чтобы приложение могло получить его, когда следующий экран будет полностью загружен. Таким образом, код может быть автоматически заполнен вашим приложением сразу после его получения.

    Корпоративные счета и номера телефонов

    Каждая компания должна иметь собственный бизнес-аккаунт WhatsApp и отправлять шаблоны аутентификации на свой собственный номер телефона, а не делиться бизнес-аккаунтами и номерами телефонов с отдельными компаниями. Использование одного бизнес-аккаунта WhatsApp несколькими компаниями противоречит правилам, поскольку это противоречит Условиям использования WhatsApp Business и Политике обмена сообщениями WhatsApp Business , а также ухудшает пользовательский и деловой опыт в WhatsApp.

    Проверка наличия установленного WhatsApp на устройствах Android и iOS

    Проверка на Android

    Если вы планируете использовать WhatsApp и ваше приложение на одном устройстве, перед тем как предлагать их в качестве варианта, вы можете проверить наличие установленного WhatsApp.
    Для начала необходимо добавить следующее в AndroidManifest.xml :
    <queries>
    <
    package android:name = "com.whatsapp" / > < package
    android :name = "com.whatsapp.w4b " / >
    запросы >
    Использование SDK (предпочтительно)
    Создайте экземпляр WhatsAppOtpHandler :
    WhatsAppOtpHandler whatsAppOtpHandler = new WhatsAppOtpHandler ();
    Проверьте, установлен ли клиент WhatsApp, передав isWhatsAppInstalled в качестве условия в If :
    Если ( whatsAppOtpHandler.isWhatsAppInstalled ( context )) { // ... сделать что - нибудь }
    Без SDK
    if ( this.isWhatsAppInstalled ( context ) ) { // ... сделать что-то } public boolean isWhatsAppInstalled ( final @NonNull Context context ) { return isWhatsAppInstalled ( context , " com.whatsapp " ) || isWhatsAppInstalled ( context , " com.whatsapp.w4b " ); } public boolean isWhatsAppInstalled ( final @NonNull Context context , final @NonNull String type ) { final Intent intent = new Intent ( ) ; intent.setPackage ( type ) ; intent.setAction ( " com.whatsapp.otp.OTP_REQUESTED " ) ; PackageManager packageManager = context.getPackageManager ( ) ; List <ResolveInfo> receivers = packageManager.queryBroadcastReceivers ( intent , 0 ) ; return ! receivers.isEmpty ( ) ; } }

    Проверка на iOS

    Используйте следующий код в своем iOS-приложении, чтобы проверить, установлен ли WhatsApp
    let schemeURL = URL ( string : "  : // otp" ) ! let isWhatsAppInstalled = UIApplication.shared.canOpenURL ( schemeURL )