Разработка
Разработка
Выберите платформу

Проверка прав на использование приложений Магазина Meta

Обновлено: 28 апр 2026 г.
Приложения, продающиеся в Магазине Meta Horizon, для которых нужно пройти проверку VRC.Quest.Security.1 или реализовать меры защиты от пиратства, можно проверить на уровне платформы, чтобы подтвердить, что пользователь законно приобрел или получил ваше приложение. Эта проверка называется проверкой права на использование. Проверку права на использование необходимо выполнить в течение 10 секунд после запуска приложения пользователем.
Она не требует подключения к Интернету. Кроме того, в коде приложения необходимо предусмотреть обработку неудачной проверки права на использование. Неудачная проверка сама по себе не приведет ни к каким действиям. Например, если проверка не пройдена, вы можете показать пользователю сообщение об ошибке и закрыть приложение или перевести его в ограниченный демонстрационный режим.

Проверка права на использование

Реализация функции инициализации — первый шаг к интеграции функций платформы. Вы можете использовать одну из двух функций инициализации с указанием ID приложения. Одна из них работает синхронно и выполняется в потоке, в котором она инициализируется, тогда как другая работает асинхронно, что позволяет выполнять другие функции, в том числе вызовы к Platform SDK, в процессе инициализации SDK. Использование асинхронного метода повышает производительность приложения и упрощает управление состояниями.
Пример:
Platform.Core.AsyncInitialize(appID)
При использовании асинхронного вызова SDK переходит в промежуточное состояние инициализации перед полной инициализацией. В этом состоянии вы можете запускать другие процессы, в том числе вызовы асинхронных методов Platform SDK. Запросы, сделанные к Platform SDK в этом состоянии, помещаются в очередь и выполняются после завершения инициализации SDK.
После вызова инициализации SDK необходимо проверить, имеет ли пользователь право на использование вашего приложения. Эту проверку необходимо выполнить в течение 10 секунд после запуска приложения.
Platform.Entitlements.IsUserEntitledToApplication().OnComplete(callbackMethod);
После получения ответа необходимо обработать результат. В предыдущем примере, если у пользователя нет прав на ваше приложение, это событие просто регистрируется. Вы можете обработать эту ситуацию, показав пользователю сообщение том, что его учетные данные не удается проверить, предложив проверить подключение к Интернету, а затем завершить работу приложения.
Если проверка права на использование завершилась с ошибкой, пользователю нельзя продолжать работу с приложением.
void callbackMethod (Message msg)
{
  if (!msg.IsError)
     {
       // Entitlement check passed
     }
        else
     {
       // Entitlement check failed. Quit app
     }
 }

Рекомендации по проверке права на использование

Для правильного выполнения проверки права на использование следуйте этим рекомендациям:
  • Для Android-приложений используйте AsyncInitialize(), а не Initialize(). Это важно, потому что AsyncInitialize() не блокирует код инициализации, что позволяет приложению загружаться быстрее. Кроме того, AsyncInitialize() не вызывает исключение на Android в случае неудачной инициализации.
  • Поместите код инициализации API платформы в блок try/catch и рассматривайте все перехваченные исключения так, как если бы проверка права на использование не была пройдена.
  • Задайте ID приложения в OculusPlatformSettings в редакторе Unity (Meta > Platform (Платформа) > Edit Settings (Редактировать настройки)) или вызовите AsyncInitialize() с явным аргументом AppId. Для мобильных разработчиков: если вам нужно запускать мобильные приложения в редакторе Unity, укажите в OculusPlatformSettings учетные данные Meta (имя пользователя и пароль). Прост задать ID приложения будет недостаточно.

Пример кода для проверки права на использование

Ниже приведен пример класса для выполнения проверки права на использование в приложении Unity:
using UnityEngine;
using Oculus.Platform;

public class AppEntitlementCheck : MonoBehaviour
{
    void Awake()
    {
        try
        {
            Core.AsyncInitialize().OnComplete(InitializeCallback);
        }
        catch (UnityException e)
        {
            Debug.LogErrorFormat("Platform failed to initialize due to exception: %s.", e.Message);
            UnityEngine.Application.Quit();
        }
    }

    void InitializeCallback(Message msg)
    {
        if (msg.IsError)
        {
            var err = msg.GetError();
            Debug.LogErrorFormat("Platform failed to initialize due to exception: %s.", err.ToString());
            UnityEngine.Application.Quit();
        }
        else
        {
            Entitlements.IsUserEntitledToApplication().OnComplete(EntitlementCallback);
        }
    }

    void EntitlementCallback(Message msg)
    {
        if (msg.IsError)
        {
            // Implements a default behavior for an entitlement check failure -- log the failure and exit the app.
            // Going into a limited demo mode, or displaying an error, is also valid.
            var err = msg.GetError();
            Debug.LogErrorFormat("Entitlement check failed: %s.", err.ToString());
            UnityEngine.Application.Quit();
        }
        else
        {
            Debug.Log("You are entitled to use this app.");
        }
    }
}
Этот процесс показан здесь:
Entitlement check process
Узнать больше можно из статьи Примеры приложений.
Вы можете выполнять дополнительное подтверждение пользователя, если хотите удостовериться в его идентичности через сервер вашей системы. Подтверждение пользователя предоставляет одноразовый криптографический код, который можно передать для проверки идентичности пользователя. Этот метод не заменяет проверку права на использование. Подробнее см. в статье Подтверждение пользователя.

Серверные API для проверки прав на использование

Проверки прав на использование также можно выполнять с помощью REST API "сервер-сервер". Это предотвращает любое вмешательство со стороны клиента и предоставляет дополнительную информацию о правах пользователя. Использовать API "сервер-сервер" необязательно.
Подробнее о взаимодействии с нашими серверными API см. на странице Основы API "сервер-сервер".
Метод запроса/URI:
POST https://graph.oculus.com/$APP_ID/verify_entitlement
Параметры
ПараметрОбязательный или нетОписаниеТипПример
access_token
Обязательный
Маркер носителя, содержащий OC|$APP_ID |$APP_SECRET или маркер доступа пользователя.
Строка
"OC|1234|456789"
user_id
Обязательно
Идентификатор пользователя, покупки которого вы хотите видеть
Строка
123456789
Пример запроса
curl -d "access_token=OC|$APP_ID|$APP_SECRET" -d "user_id=$USER_ID" https://graph.oculus.com/$APP_ID/verify_entitlement
Пример ответа
{"success":true,"grant_time":1744148687}
Значения
ПолеОпределениеТип
success
Определяет, имеет ли пользователь право собственности на предмет.
Логическое значение
grant_time
Время, когда пользователь получил права на этот элемент (метка времени в формате Unix).
Число

Тестирование проверки права на использование на устройствах Meta Quest

Чтобы убедиться, что ваше приложение соответствует стандартам VRC для загрузки в Магазин Meta Horizon, протестируйте работу проверки прав.

Включение режима разработчика

Этот шаг нужно выполнить только один раз для каждого устройства.
Примечание. Информацию о настройке устройства Link PC-VR для разработки можно найти в документации по PC SDK.
После выполнения этих действий, возможно, потребуется перезагрузить гарнитуру. После этого в вашей библиотеке гарнитуры появится новый раздел "Неизвестные источники".

Тестирование проверки прав

  1. В редакторе перейдите в Meta > Platform (Платформа) > Edit Settings (Редактировать настройки) и замените App ID произвольной строкой цифр.
    The Platform Settings dialog box with a random string of numbers
  2. Попробуйте выполнить проверку прав в редакторе или соберите APK и протестируйте на гарнитуре.
  3. Проверка прав должна завершиться ошибкой.

Устранение неполадок

Как проводить тесты функций приложения, которые требуют прохождения проверки прав, в редакторе?
Для тестирования и отладки приложений можно использовать Meta XR Simulator. Чтобы настроить тестового пользователя в своем проекте, выберите Meta > Platform (Платформа) > Edit Settings (Редактировать настройки) в меню редактора. Установите для параметра Use Standalone Platform (Использовать независимую платформу) значение true и укажите учетные данные тестового пользователя, имеющего права на доступ к приложению. После этого при запуске игры в Meta XR Simulator проверки прав и другие вызовы платформы должны работать корректно.
Почему некоторые пользователи не проходят проверку прав?
  • Проверку прав проходят только тестовые пользователи из команды тестируемого приложения. У тестовых пользователей, связанных с другой командой, нет необходимых прав для доступа к приложению, что приводит к ошибке проверки.
  • Публикация новой версии приложения. На права может повлиять публикация новой версии приложения. Чтобы повторно запустить процесс проверки прав, убедитесь, что все пользователи находятся в правильных каналах и что новая версия имеет более высокий номер.
  • Необходимость загрузки APK в канал для создания начального сопоставления имени пакета -> ID приложения. Для нового приложения начальное сопоставление имени пакета и идентификатора приложения устанавливается при первой загрузке APK в канал. Если этот шаг не выполнен, проверка прав не пройдет, поскольку система не сможет проверить права доступа из-за отсутствия соответствующего сопоставления. Чтобы узнать, как найти название пакета, обратитесь к следующему вопросу.
  • Несоответствие ID приложения и названия пакета. После того как ID приложения будет сопоставлен с названием пакета, в случае несоответствия между сообщаемым ID приложения и названием пакета приложения, выполняющего проверку прав, и зафиксированным системой названием пакета для этого ID приложения, система не сможет правильно идентифицировать и подтвердить связанные с приложением права. Убедитесь, что используемый ID приложения соответствует имени пакета в манифесте приложения. Чтобы узнать, как найти название пакета, обратитесь к следующему вопросу.
  • Назначение пользователей и тестовых пользователей в правильные каналы. Для доступа к определенным приложениям пользователи и тестовые пользователи должны быть назначены в правильные каналы. Это гарантирует, что у них будут права на использование приложения и доступ к его функциям и контенту.
Как найти название пакета приложения на Панели разработчика Meta Horizon?
  1. Выберите приложение.
  2. В левой области навигации выберите Распространение > Сборки.
  3. На странице Сборки в столбце Сборка нажмите гиперссылку версии сборки, которую нужно просмотреть.
  4. На странице Сборки > № версии на вкладке Сведения вы найдете название пакета.
Screenshot of finding package name of an App in the developer dashboard
Логотип навигации
Русский
© 2026 Meta