При этом для любого пользователя возвращается ошибка «404 не найдено». Используя тот же URI, ключ API и имя пользователя, я могу успешно получать категории и группы. Есть какие-либо предложения?
@pfaffman Я не понимаю ваш ответ, в нем нет ответа. Та тема показывает, как узнать о эндпоинтах, которые не задокументированы. Этот же задокументирован, и это один из очень немногих вызовов API, которые нельзя таким образом реверс-инжинирить, поскольку этот конкретный эндпоинт API никогда не вызывается фронтендом на Ember?
@mpemburn Должно работать, документация выглядит корректно. Внешний ID — это ID в вашей удаленной базе данных, который передается, когда включен SSO. Можете поделиться своим кодом?
Ой. Чаще всего ответ на вопрос «документация API сломана, как мне…» — это то, на что я дал ссылку. При более внимательном рассмотрении становится болезненно очевидным, что что-то, связанное с внешними идентификаторами, невозможно получить через пользовательский интерфейс. Марку повезло, что вы обращаете на это больше внимания!
Теория №1: В большинстве случаев (но не всегда) внешний ID является идентификатором базы данных и, следовательно, представляет собой числовое значение. Вы уверены, что ваш внешний ID — это mark89? Возвращает ли SingleSignOnRecord.find_by(external_id: 'mark89') запись из базы данных?
Теория №2: На вашем тестовом сайте не включена SSO, что обычно сопровождается использованием внешних ID. Вы уверены, что внешние ID присутствуют?
Подождите… Ваши заголовки находятся в cookie? Это недопустимо… должно быть так:
Я пробовал делать этот же запрос через плагин WordPress для Discourse, и он тоже не работает, хотя запрос на получение пользователя по электронной почте работает. Подумав, что проблема может быть в нашей песочнице Discourse (с которой я тестировал до сих пор), я попробовал это на продакшн-экземпляре, и история та же. Не знаю, что делать дальше, но мне действительно нужно, чтобы это работало.
Вы проверили две мои теории, которые я изложил до того, как увидел, что вы отправляете заголовки аутентификации неверным способом?
Теория №1:
В большинстве случаев (но не всегда) внешний идентификатор является идентификатором базы данных и, следовательно, числовым значением. Уверены ли вы, что ваш внешний идентификатор — mark89? Возвращает ли запрос SingleSignOnRecord.find_by(external_id: 'mark89') запись из базы данных?
Теория №2:
На вашем тестовом сайте не включен SSO, что обычно идет рука об руку с внешними идентификаторами. Уверены ли вы, что внешние идентификаторы присутствуют?
Хорошо, значит, в песочнице SSO не настроен, а в продакшене — да. Я проверил свою запись пользователя в продакшене: да, внешний ID установлен, и это действительно числовой ID. Когда я протестировал с учётными данными и URI продакшена, используя реальный внешний ID, вернулся тот же самый error 404.
О, и я не уверен, как протестировать SingleSignOnRecord.find_by(external_id: ‘mark89’). Где находится эта утилита?