这一次,我想对后端使用不同的技术。因此,我在graphql API中使用了prisma、apollo-server和typegraphql。you can find more info here
安装完这些包后,我想用Google进行一个社交登录。经过一些研究,我发现对于节点js后端,推荐使用passport js & passport-google-oauth2。然而,这些教程中几乎有90%使用express js,据我所知,你不能在express -graphql中使用代码优先的方法(它使用sdl-first方法,如果可以的话,我想尝试使用typegraphql ),那么有没有一种方法可以在不使用express的情况下实现社交登录到我的应用程序接口?
index.ts
import 'reflect-metadata'
import * as tq from 'type-graphql'
import { ApolloServer } from 'apollo-server'
import { ProfileResolver, UserResolver } from './resolvers'
const PORT = process.env.PORT || 5000
const app = async () => {
const schema = await tq.buildSchema({resolvers: [UserResolver, ProfileResolver]})
const server = new ApolloServer({
schema,
context: {
}
})
const { url } = await server.listen(PORT)
console.log(`Server is running at ${url}`)
}
app()如果需要,我可以共享其他文件。
附言:我是阿波罗和打字机的新手。我遵循了他们的文档,但所有关于身份验证的文章都是JWT。他们中没有人提到社交登录。
发布于 2021-06-01 04:15:46
老实说,我不太熟悉apollo-server或typegraphql,甚至不太熟悉构建GraphQL端点。但我知道一些基本概念,我会尽我所能给你一个找到解决方案的起点。
社交登录通常使用OAuth2协议,并且倾向于使用JWTs作为身份验证令牌。这就是为什么医生提到JWTs。
GraphQL不需要知道任何关于操作的信息,只需要知道预期的数据、应该返回的数据以及为该操作调用的实际服务。我喜欢把GraphQL看作是访问服务的通用接口。它不应该知道任何关于身份验证、OAuth2等的信息。因此,您构建的任何GraphQL端点都可以调用另一个服务来处理身份验证,并返回您期望用于身份验证的数据: JWT、错误等。
https://stackoverflow.com/questions/67777080
复制相似问题