0

I wanted to build a web app that can view the user's YouTube channel info. I used Firebase for authentication with Google and then stored the accessToken and refreshToken with the help of the code below.

const provider = new GoogleAuthProvider();

    provider.addScope("https://www.googleapis.com/auth/youtube.readonly");

    signInWithPopup(auth, provider)
      .then(async (result) => {
        // This gives you a Google Access Token. You can use it to access the Google API.
        const credential = GoogleAuthProvider.credentialFromResult(result);

        const accessToken = credential.accessToken;
        const refreshToken = result._tokenResponse.refreshToken;
        const user = result.user;
        localStorage.setItem("accessToken", accessToken);
        localStorage.setItem("refreshToken", refreshToken);
        localStorage.setItem("user", user);
}

But after the expiry of the accessToken, it gets invalid. So, I want to get the newly created accessToken with help of refreshToken but I could not find any way to retrieve that.

stvar
  • 6,551
  • 2
  • 13
  • 28
  • https://firebase.google.com/docs/reference/js/v8/firebase.User#reauthenticatewithcredential – hoangdv Sep 20 '21 at 07:23
  • You can find details in below answer. https://stackoverflow.com/questions/40838154/retrieve-google-access-token-after-authenticated-using-firebase-authentication – Kathees Sep 20 '21 at 07:25

1 Answers1

0

Firebase SDKs don't manage provider tokens as mentioned in this answer. Easiest way would be to reauthenticate the user but users may have to re-authorize your application if needed. Re-authenticating will return same UserCredential object as result in code snippet in your question.

Another option would be to use provider's own SDK and refreshing the token whenever required.

Dharmaraj
  • 47,845
  • 8
  • 52
  • 84
  • Can you give me some resource to login provider's own SDK, in this case Google with Firebase because reauthentication would be tedious for users. – Xanjit Xarkar Sep 24 '21 at 06:01