Спасибо за этот пост, он оказался неоценимым при настройке недавнего проекта, требующего входа в Salesforce.
В нашем случае приложение Salesforce было сообществом (Community), поэтому нам пришлось изменить некоторые из указанных выше параметров. Я пишу в эту старую тему, на случай если это поможет кому-то ещё. Это чуть не свело меня с ума на целый день.
Тем не менее у нас всё ещё возникали ошибки 403 Forbidden, которые представляли собой простой нестилизованный HTML и совсем не походили на ошибку Discourse, что привело к длительной отладке Salesforce и сильному раздражению. Но проблема была в Discourse.
Forbidden
У вас нет разрешения на доступ к этому ресурсу.
Кроме того, при попытке использовать ErrorDocument для обработки запроса возникла ошибка 500 Internal Server Error.
Хотя перенаправление на Callback URL, казалось, работало, консоль браузера фиксировала сбои аутентификации. В конце концов причиной сбоя аутентификации оказалось неустановленное значение oauth2 callback user id path. Установка его в id решила все проблемы.
Все остальные настройки такие же, как в предыдущем посте.
Спасибо за инструкции. Мы успешно прошли аутентификацию через Salesforce, но столкнулись с проблемой. Наши объекты/поля Salesforce, похоже, не передаются в Discourse корректно. Сразу после успешного входа в Salesforce на Discourse система воспринимает пользователя как нового и запрашивает имя пользователя, электронную почту и имя, хотя эти данные должны поступать из полей json (name, email, username) OAuth2.
Просим вашей помощи в уточнении формата json для объектов/полей Salesforce, используемых в плагине OAuth2. Мы пробовали варианты object.field, object_field и просто field. Ошибок при этом не возникает, но данные всё равно не передаются из Salesforce в Discourse через json, поэтому система не распознаёт вход как повторный, а не как регистрацию нового пользователя в Discourse.