Привет, @simon, спасибо за ответ. Позвольте подробнее описать нашу ситуацию.
Мы разрабатываем мобильное приложение, которое опирается на серверную логику конечных точек Discourse. Когда пользователь входит в приложение, данные аутентификации отправляются в API Discourse через session.json, который возвращает cookie. Этот cookie затем используется для перенаправления веб-вью на /user-api-key/new, где пользователю предлагается подтвердить авторизацию. После подтверждения полезная нагрузка расшифровывается в API-ключи.
В таком случае мы можем использовать API-ключи как глобальный токен внутри мобильного приложения для доступа к другим конечным точкам Discourse. Однако при выходе пользователя токен должен быть удалён из глобального состояния, чтобы он больше не мог обращаться к таким конечным точкам, как создание новой темы.
Мой вопрос исходит из этой темы: как проверить, есть ли у пользователя уже user_api_keys и активны ли они? Если ключи существуют и активны, пользователь должен иметь возможность использовать их после входа. Если нет, пользователю потребуется создать новые user_api_keys, что потребует подтверждения через веб-вью.
Это основная проблема, с которой я столкнулся.
Ещё одно решение, которое я рассмотрел, основано на сообщении из Как получить значение ключа API пользователя через API: хранить API-ключи в базе данных нашего мобильного приложения.
Я также обратился к посту Генерация ключа API пользователя без подтверждения пользователем - #2 от simon, который изначально рассматривал для реализации ключей API. Однако проблема остаётся прежней: при проверке /admin/api/keys мы не можем получить значение уже сохранённых в базе данных ключей API или получить ключи API для конкретного пользователя. Я полагаю, что для такой реализации нам необходимо хранить API-ключи в нашей собственной базе данных.