PUT /u/{username}.json не меняет email

Согласно документации API Discourse (Discourse API Docs), через указанный endpoint должно быть возможно изменить адрес электронной почты.

  1. Используйте этот API-endpoint: PUT /u/{username}.json
  2. Используйте следующий body запроса:
{
    "Name": "Test Name",
    "Email": "test@test.com"
}
  1. Получен ответ 200 OK. Имя изменится, но email — нет.

В ответе отсутствует поле “email”.

1 лайк

Я рекомендую вам провести реверс-инжиниринг API Discourse и посмотреть, какой вызов API использовать.

2 лайка

Привет, xbd,

Согласно документации, изменение адреса электронной почты выполняется через этот эндпоинт: /u/{username}/preferences/email.json: https://docs.discourse.org/#tag/Users/operation/updateEmail

Однако на указанный адрес будет отправлена ссылка для подтверждения, которую необходимо вручную подтвердить пользователю. До тех пор адрес электронной почты не будет изменён.

5 лайков

Спасибо за вашу помощь. Возможно, стоит удалить свойство email из PUT /u/{username.json} в документации. Это сэкономит время на отладку ;-).Насчет письма подтверждения: я прочитал об этом в другой теме, но не совсем понял смысл. На всякий случай уточню: Discourse — это одно из многих приложений в проекте, а аутентификация пользователей обрабатывается собственным сервером аутентификации (как в моем случае). Именно сервер аутентификации отвечает за подтверждение email. Приложениям следует просто выполнять то, что указывает сервер аутентификации. На мой взгляд, это стандартный подход. В противном случае возникают множественные письма подтверждения, расхождения в данных и т.д.

2 лайка

Спасибо, что подняли этот вопрос. Действительно, это странно. Возможно, это пережиток прошлой эпохи. Я уточню информацию и при необходимости обновлю документацию. :+1:

2 лайка

Помогает ли в этом настройка администратора auth overrides email?

4 лайка

Тогда вам нужно настроить его так, чтобы он сообщал Discourse, что адрес электронной почты подтверждён, и обновлять email не через API, а на вашем сервере аутентификации.

2 лайка

Ещё раз спасибо, что подняли этот вопрос, и извините за потраченное на отладку время. Документация по API была обновлена.

3 лайка