2

Let's say I want to get the firebase auth token and set it to each and every request. To fetch the firebase auth token I need to send an async call to the firebase server. Only when it completes I get the token. I tried to set it as shown below. But apollo sends the request before I get the token from firebase. How can I fix this? How can I make apollo wait?

export const client = new ApolloClient({
  uri: 'http://localhost:4000/',
  request: async operation => {
    await firebase.auth().onAuthStateChanged(async user => {
      if (user) {
        const token = await firebase.auth().currentUser.getIdToken(/* forceRefresh */ true);

        operation.setContext({
          headers: {
            authorization: token ? `Bearer ${token}` : ''
          }
        });
      }
    });
  }
});
THpubs
  • 7,804
  • 16
  • 68
  • 143

0 Answers0