firebase / snippets-web

Web snippets for firebase.google.com
Apache License 2.0
746 stars 241 forks source link

Where does `googleUser` come from? #256

Open csdal opened 2 years ago

csdal commented 2 years ago

https://github.com/firebase/snippets-web/blob/1c4c6834f310bf53a98b3fa3c2e2191396cacd69/snippets/auth-next/google-signin/auth_google_checksameuser.js#L15

I know that firebaseUser comes from this ( result.user):

signInWithPopup(auth, provider)
      .then((result) => {
        // This gives you a Google Access Token. You can use it to access the Google API.
        const credential = GoogleAuthProvider.credentialFromResult(result);
        const token: string | undefined = credential?.accessToken;
        // The signed-in user info.
        const user = result.user;
.....

But where does googleUser come from?

heloineto commented 2 years ago

I'm having the same issue. I've looked for hours on the docs and on the internet and had no luck :(

Temidayo32 commented 1 month ago

I think the documentation should be updated. The googleUser come from using the gapi client. Here is a code snippet on how to do that.


export const handleGoogleSignIn = async (): Promise<any> => {
  return new Promise<any>((resolve, reject) => {
    const script = document.createElement('script');
    script.src = 'https://apis.google.com/js/api.js';
    script.onload = () => {
      console.log('Google API script loaded.');
      (window as any).gapi.load('client:auth2', {
        callback: () => {
          (window as any).gapi.auth2.init({
            clientId: authClientId,
          }).then(() => {
            (window as any).gapi.auth2.getAuthInstance().signIn().then((googleUser: any) => {
              resolve(googleUser); // Resolve with googleUser
            }).catch((error: Error) => {
              reject(error);
            });
          }).catch((error: Error) => {
            reject(error);
          });
        },
        onerror: (error: Error) => {
          reject(error);
        }
      });
    };
    script.onerror = (error: Event | string) => {
      console.error('Error loading Google API script:', error);
      reject(error instanceof Error ? error : new Error('Unknown error loading Google API'));
    };
    document.body.appendChild(script);
  });
};

Once, you get the googleUser, you can then, do this:

providerData[i].uid === googleUser.getBasicProfile().getId()