Skip to main content

Firebase Authentication with GraphQL and React Client [JavaScript]

https://blog.morizyun.com/javascript/typescript-tutorial-firebase-auth-graphql-react.html

import ApolloClient, { InMemoryCache } from "apollo-boost";

const token = await auth.currentUser.getIdToken(true);

const client = new ApolloClient({
  cache: new InMemoryCache(),
  headers: { token: token },
  uri: "http://localhost:3000/graphql"
});

Before verifying the token, you need to initialize App.
// Firebase
firebaseAdmin.initializeApp({
  credential: firebaseAdmin.credential.cert({
    projectId: FIREBASE_PROJECT_ID,
    clientEmail: FIREBASE_CLIENT_EMAIL,
    privateKey: FIREBASE_PRIVATE_KEY
  }),
  databaseURL: FIREBASE_DATABASE_URL
});
After then, please set the token of headers to GraphQL context.
graphqlExpress((req, res) => {
  const context = createExpressContext(
    {
      firebaseToken: req.headers.token
    },
    res
  );

  return {
    schema,
    context
  };
})
Now, your GraphQL server can confirm the token in resolvers.
const validateAuthorization = async (token: string) => {
  await firebaseAdmin.auth().verifyIdToken(token);
};

Comments

Popular posts from this blog

apollo client v3 - clean up non-needed packages

v3: https://github.com/apollographql/apollo-client clean up: ApolloProvider useQuery, useMutation, useApolloClient Apollo Client >= 3 includes React hooks functionality out of the box. You don't need to install any additional packages. https://www.apollographql.com/docs/react/api/react/hooks/ //import { ApolloProvider } from '@apollo/react-hooks' import { ApolloProvider } from '@apollo/client/react' //import { useQuery, useMutation, useApolloClient } from '@apollo/react-hooks' import { useQuery, useMutation, useApolloClient } from '@apollo/client' How i can CATCH any error (network and graphql), and prevent promise.reject()  https://github.com/apollographql/apollo-client/issues/6469 npm uninstall @apollo/react-hooks https://github.com/apollographql/apollo-link npm uninstall apollo-link npm uninstall apollo-client npm uninstall apollo-link-error npm uninstall apollo-link-http npm uninstall apollo-link-ws npm uninstall apollo-cache-inmemory