Открытые перенаправления обычно вызывают у людей беспокойство. В данном случае, если вы добавите, например, Nextcloud, это означает, что пользователи смогут использовать URL на Nextcloud для генерации ключа на Discourse, а затем перенаправиться обратно на Nextcloud.
На шаге 6, к какому именно API-запросу вы обращаетесь?
Или если кто-то другой знает, пожалуйста, ответьте!
API-вызовы, упомянутые на шестом шаге, — это любые вызовы, которые вы хотите выполнить. Здесь речь идет о вызовах, которые реализуют то, что вы действительно хотите сделать с сайтом на Discourse.
В моем случае у меня было отдельное приложение, которое взаимодействовало с сайтом на Discourse — например, создавало посты на этом сайте в ответ на действия пользователя в отдельном приложении. Приложение входило в систему от имени пользователя, пользователь выполнял какие-то действия, а затем приложение отправляло POST- и PUT-вызовы к API для создания или редактирования постов на Discourse от имени этого пользователя.
Понятно. В моём случае я хочу реализовать сценарий, при котором пользователь входит на мой сайт, проходит авторизацию через Discourse, после чего перенаправляется обратно, и мой сайт может получить его имя пользователя, email, аватар, ID и т.д., чтобы создать нового пользователя на нашем ресурсе. @JQ331
Тогда вы не по адресу: использовать ключи API пользователя для этого нельзя.
Вместо этого вам нужно настроить Discourse как провайдера DiscourseConnect, а свой сайт — как клиента DiscourseConnect. См. Use Discourse as an identity provider (SSO, DiscourseConnect)
Правильно ли я понимаю, что для чего-то подобного мне потребуется доступ к секретному ключу сайта?
Понятия «секретный ключ» как такового не существует, однако для настройки этого вам действительно потребуется доступ администратора к Discourse.
Привет! Я попытался внедрить этот API-ключ пользователя, но, похоже, на нём установлен ограничитель частоты запросов (rate limiter). После нескольких вызовов API я получаю ошибку 429. Есть ли какая-то конфигурация для этого? Я использую платный хостинг.
Здесь представлена дополнительная информация об ограничениях скорости.
Если вы используете хостинг от Communiteq, пожалуйста, обратитесь в нашу службу поддержки через панель управления, чтобы настроить это.
Привет, @RGJ, спасибо за ответ. В моей компании есть тарифы Standard и Business, но я не вижу в панели управления раздел «Служба поддержки». Вместо этого я написал на team@discourse.org — это правильно?
Если вы размещены у нас на Discourse (а не у @RGJ в Communiteq), то это действительно правильный способ связаться с нашей службой поддержки.
![]()
Привет!
Я пишу приложение, которое использует этот API.
Есть ли способ получить информацию о пользователе (в основном, имя пользователя) из него?
Или мне нужно запросить имя пользователя вручную, а затем получить его позже?
Добро пожаловать, @gilice.
Вы имеете в виду, что используете API для получения ключей API, или же пытаетесь сделать что-то с пользователями?
Это может помочь: Обратная разработка API Discourse.
Однако, если вы пытаетесь получить имя пользователя, один из способов — поиск по адресу электронной почты на маршруте admin/users.
Было бы полезно, если бы вы уточнили, что именно вы пытаетесь сделать.
Привет! Спасибо за ответ, возможно, я должен был сформулировать это лучше.
Вопрос, который я хотел задать: я могу получить ключ API, принадлежащий пользователю. Затем могу ли я получить профиль пользователя (имя пользователя, фото профиля и т. д.), не запрашивая его имя пользователя и не используя метод getUser?
Мне непонятно, как это должно работать. Откуда именно вы хотите получить API-ключ? Как видно из схемы, пользователю сначала нужно войти в систему, чтобы получить ключ, и для этого требуются его обычные данные для входа. Можете ли вы подробнее объяснить, что вы пытаетесь сделать?
Всем привет,
В моём приложении я использую API-ключи пользователей для реализации некоторых функций Discourse. По ошибке я авторизовал вход (через API /user-api-key/new) с неверной учётной записью Discourse.
Я отозвал доступ к приложению с неверной учётной записью. Однако при попытке авторизации с правильной учётной записью я получаю ошибку. Просмотрев логи, я обнаружил следующую ошибку:
ActiveRecord::RecordNotUnique (PG::UniqueViolation: ERROR: duplicate key value violates unique constraint “index_user_api_keys_on_client_id” DETAIL: Key (client_id)=
Исходя из ошибки, я предполагаю, что нельзя связать две учётные записи пользователей с одним и тем же client_id.
Есть ли способ обойти эту проблему?
Также существует ли API для обновления client_id пользовательского API-ключа, даже если API-ключ отозван?
Спасибо!
Что именно это означает?
Я разрабатываю приложение, которое запрашивает данные от имени пользователя с помощью user-api-key. Цель — избежать проблем с ограничением скорости запросов (rate limiting). В каких именно случаях приложение сталкивается с такими ограничениями?
Думаю, вы ищете что-то вроде этого:
Да! Именно это я и хотел. Большое спасибо!!!
Можно ли получить спецификацию OpenAPI для API-ключей пользователей? Или рассмотреть возможность добавления их в существующую документацию спецификаций.
GitHub - discourse/discourse_api_docs: Discourse API Documentation · GitHub
Для разработчиков сторонних приложений мы предпочитаем использовать OpenAPI для генерации необходимых интерфейсов и API.