Graphql Apollo 服务器和 firebase 身份验证

Graphql Apollo server and firebase authentication

我有 graphql api 服务器并从我的 flutter 应用程序调用 api。

现在我需要实现登录认证。所以我决定使用 firebase 身份验证。

我需要电子邮件、google 和 Facebook 登录。

我有点困惑如何验证用户。

  1. 在我的 flutter 应用程序中,直接使用 firebase 进行身份验证并获取令牌。如果获得令牌调用创建用户 api 并创建用户。当然,我会传递token,并针对firebase验证token。

  2. 在我的 Apollo 服务器中创建 SignIn、SignInWithGoogle 和 SignInWithFacebook 端点并从我的 flutter 中调用。

常见的做法是什么?

我使用类似的堆栈、Firebase Auth 来处理电子邮件登录、phone 和社交,然后将令牌传递到后端以验证经过身份验证的有效用户正在发出这些请求。我正在使用 nodejs/graphql/mongodb 后端。使用中间件对每个请求进行身份验证,甚至处理 graphql 突变中的推送通知。

第一种方法是请求登录到 firebase 并检索用户凭据。

第二种方法是向服务器发送请求,服务器向 firebase 发送请求,firebase returns 将凭证发送给服务器,然后服务器 returns 将凭证发送给您。

基本上走简单的路线,节省服务器成本,不需要调用服务器,直接在客户端调用firebase就可以了。当您在客户端执行此操作时,您可以访问 authStateChanges 并且令牌 firebase 也会为您提供这将使您的生活更轻松。