Strapi возвращает код ошибки 400 при регистрации пользователя, когда включена проверка электронной почты

  • Я установил модуль сетки отправки для strapi.
    # P1 #
  • настроил подключаемый модуль электронной почты ! [введите описание изображения здесь
  • Настройка ролей и разрешений  введите описание изображения здесь

  • # P3 #
    # P4 #

введите описание изображения здесь

  • Однако пользователь создается в типе контента «Пользователи» strapi  введите описание изображения здесь

  • Скриншот консоли.

    Элемент списка

Помогите мне с этим справиться !!


person Ayush Rajniwal    schedule 25.12.2019    source источник


Ответы (3)


Управление ошибками в плагине электронной почты не очень хорошее, мы должны это изменить!

Эта ошибка, вероятно, вызвана этим строка кода

Чтобы получить правильную ошибку, я предлагаю вам напрямую добавить console.log из err в ваш strapi-provider-email-sendgrid node_module.

Я знаю, что это нехорошо, но это единственный способ узнать, какая у вас ошибка.

person Jim LAURIE    schedule 26.12.2019
comment
Спасибо, что изучили это. Я console.log err. Это результат { messages: [ { id: 'Auth.form.error.email.invalid' } ] }. Я действительно нахожу решение этого. Я перезаписываю файл Auth.js в \extensions\users-permissions\controllers. Выложу на нее полное решение :). Но проблема не решена. Это просто обходной путь. - person Ayush Rajniwal; 26.12.2019
comment
К сожалению, @Jim LAURIE, я действительно console.log err в файле Auth.js. Вот err console.log от strapi-provider-email-sendgrid node_module code: 401, message: 'Unauthorized', response: { headers: { server: 'nginx', date: 'Thu, 26 Dec 2019 16:13:44 GMT', 'content-type': 'application/json', ...some other stuff as well }, body: { errors: [ { message: 'The provided authorization grant is invalid, expired, or revoked', field: null, help: null } ] } } } - person Ayush Rajniwal; 26.12.2019
comment
Правильны ли ваши привилегии sendgrid? (конфиг, токен и блаблабла ...) - person Jim LAURIE; 27.12.2019
comment
Да, они. Я могу отправлять почту, заменив почтовый код strapi официальным кодом sendgird Я использовал код, доступный здесь, что означает правильность конфигурации, токена и т. д. - person Ayush Rajniwal; 27.12.2019

Я столкнулся с аналогичными проблемами с поставщиком электронной почты AWS SES от Strapi, поэтому я оставлю свое решение здесь на случай, если в будущем кто-то найдет ответ на этот вопрос в Google.

Это сообщение об ошибке фактически выдается поставщиком электронной почты Sendgrid Strapi в строке 58 ( https://github.com/strapi/strapi/blob/dae9cfa415881f17ebb95d9ea3887c6a0ae0dca6/packages/strapi-provider-email-sendgrid/lib/index.jpg). .

Есть ловушка, которая перехватывает исключения, создаваемые библиотекой Sendgrid, и вместо этого генерирует это общее сообщение. Вот ваши варианты, чтобы выяснить, в чем заключается настоящая ошибка:

  1. Отлаживайте поставщика, подключившись к запущенному процессу NodeJS
  2. Добавьте несколько операторов console.log в файл node_modules/strapi-provider-email-sendgrid/lib/index.js внутри catch и проверьте свой стандартный вывод
  3. Измените вызов, чтобы отклонить его внутри catch, чтобы вернуть фактическую строку error.message. Это может потребовать изучения того, как Strapi будет обрабатывать ошибки, возникающие внутри контроллеров, чтобы убедиться, что он не потеряется в промежуточном программном обеспечении I18N или других точках расширения.
person Sergio Leon    schedule 19.04.2020

В вашем messages.id написано «Auth.form.error.email.invalid».

С веб-сайта Sendgrid: «Недействительное электронное письмо возникает, когда вы пытаетесь отправить электронное письмо на адрес, отформатированный таким образом, что не соответствует стандартам формата электронной почты в Интернете, или если электронное письмо не существует на почтовом сервере получателя ... Если сервер получателя проверяет адрес и не находит его, они отправят ответ 550, чтобы сказать, что это недействительный адрес электронной почты ». https://sendgrid.com/docs/ui/sending-email/invalid-emails/

Этот адрес электронной почты действительно существует? Попробуйте протестировать свою личную учетную запись электронной почты.

person Michael_Scott    schedule 25.12.2019
comment
Спасибо, что изучили это. Я проверил свою панель управления sendgrid, и он показывает Request = 0 (я думаю, это означает, что sendgrid не отклонил его. Просто они не получили никаких запросов от strapi). Я также протестировал его со своей учетной записью электронной почты, результат тот же. Есть еще предложения? - person Ayush Rajniwal; 26.12.2019