Как проверить электронную почту пользователя при использовании GraphQl и Node.js - PullRequest
0 голосов
/ 05 апреля 2019

Я пытаюсь реализовать проверку электронной почты пользователя в своем любимом проекте с помощью GraphQL и Node.js.

У меня уже есть преобразователь signUp, который отправляет токен подтверждения, но я только что понял, что когда пользователь нажимает наПо этой ссылке нет способа отправить данные из электронного письма следующему распознавателю GraphQL, который будет использовать токен и проверить электронную почту.

Поэтому вопрос заключается в следующем: я должен сделать конечную точку REST /verify для выполнения работы илиесть способ использовать /graphql конечную точку

1 Ответ

1 голос
/ 05 апреля 2019

Если вы используете отдельную конечную точку /verify, вы, скорее всего, захотите перенаправить пользователя обратно на ваш сайт после обработки запроса. Один из подходов состоит в том, чтобы эффективно перевернуть этот поток, связавшись с вашим сайтом, а затем заставить вашу страницу выполнить необходимый запрос GraphQL.

Кроме того, вы можете вызвать свой распознаватель verify по ссылке в электронном письме. express-graphql будет обрабатывать запросы POST и GET. Однако при таком подходе следует помнить несколько вещей:

  • Он будет работать только с запросами, поэтому ваше поле «проверки» должно иметь тип запроса
  • Запрос будет работать в контексте браузера, но потерпит неудачу, если вы вызовете его изнутри, например, GraphiQL

Вот базовый пример:

const typeDefs = `
  type Query {
    verify: Boolean # Can be any nullable scalar
  }
`
const resolvers = {
  Query: {
    verify: (root, args, ctx) => {
      // Your verification logic
      ctx.res.redirect('https://www.google.com')
    }
  }
}
const schema = makeExecutableSchema({ typeDefs, resolvers })

app.use('/graphql', graphqlHTTP((req, res) => ({
  schema: MyGraphQLSchema,
  graphiql: false,
  // Inject the response object into the context
  context: { req, res },
})))

app.listen(4000)

Затем вы можете просто перейти по этому URL в вашем браузере:

http://localhost:4000/graphql?query={verify}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...