RocketChat: отправка действительного JSON для Oauth, но получение ответа «поле имени пользователя» user.id «не найден в данных» - PullRequest
1 голос
/ 08 апреля 2019

Я устанавливаю пользовательский логин Oauth для RocketChat со следующими настройками:

URL: http://home.newtonproject.beta.diynova.com
Token Path: /oauth2/access_token/
Token sent via: Header
Identify token sent via: Same as "token sent via"
Identity path: /oauth2/profile/
Authorize path: /oauth2/authorize/
Scope: read
Id: 5e024aac8f78c76a9faf
Secret: 4bf7ae8ad3a7db8c7c7ce27a3bb421bc85b1d7d8
Login style: Popup
Username field: user.email
Merge users: False

После нажатия кнопки «Войти с помощью Oauth», которая появляется на экране входа в RocketChat, наш сервер принимает запрос и разрешает использование данных пользователя. Он отправляет следующий JSON:

data = {
"user": {
    "username:": access_token_obj_user,email.replace('@', '_'),
    "id":  access_token_obj_user,email.replace('@', '_'),
    "email": access_token_obj_user,email,
    },
"username:": access_token_obj_user,email.replace('@', '_'),
"id":  access_token_obj_user,email.replace('@', '_'),
"email": access_token_obj_user,email,
}

После этого я просто получаю красное всплывающее окно на экране входа в систему с сообщением "Поле имени пользователя" user.id "не найдено в данных"

Содержание журнала

Исключительная ситуация при вызове метода 'login' Ошибка: данные службы для службы newtonwebsite должны содержать идентификатор в AccountsServer.updateOrCreateUserFromExternalService (packages / accounts-base / accounts_server.js: 1192: 13) в AccountsServer.Accounts.updateOrCreateUserFromExternal () custom-oauth / server / custom_oauth_server.js: 342: 47) в AccountsServer.Accounts.updateOrCreateUserFromExternalService (server / configuration / accounts_meld.js: 50: 52) в методе MethodInvocation. js: 55: 21) в tryLoginMethod (packages / accounts-base / accounts_server.js: 460: 31) в tryLoginMethod (packages / accounts-base / accounts_server.js: 1294: 14) в AccountsServer._runLoginHandlers (пакеты / account-base /accounts_server.js:458:22) в AccountsServer.Accounts._runLoginHandlers (packages / rocketchat: lib / server / lib / loginErrorMessageOverride.js: 7: 35) в MethodInvocation.methods.login (пакеты / учетные записи -base / accounts_server.js: 518: 31) в MethodInvocation.methodMap. (анонимная функция) (packages / rocketchat_monitoring.js: 2731: 30) в MaybeAuditArgumentChecks (packages / ddp-server / aliveata_server.js: 1767: 12) в DDP ._CurrentMethodInvocation.withValue (packages / ddp-server / aliveata_server.js: 719: 19) в Meteor.EnvironmentVariable.EVp.withValue (packages / meteor.js: 1304: 12) в DDPServer._CurrentWriteFence.withdpue (( /livedata_server.js:717:46) в Meteor.EnvironmentVariable.EVp.withValue (packages / meteor.js: 1304: 12) в Promise (packages / ddp-server / aliveata_server.js: 715: 46) в новом Promise () в Session.method (packages / ddp-сервер / aliveata_server.js: 689: 23) в пакетах / ddp-сервер / aliveata_server.js: 559: 43

Как видно из приведенного выше кода JSON, мы определенно отправляем user.id в JSON.

Мы попытались изменить поле JSON и соответствующую ссылку в настройках RocketChat. Но тогда он просто говорит «Внутренняя ошибка сервера»

Ожидаемый конечный результат - успешный вход в систему oauth

...