Home > front end >  How to export async var from a login
How to export async var from a login

Time:10-23

I am trying to export user info from login to other modules.

  export function login(){

console.log("entrando A LOGIN")    
var provider = new firebase.auth.GoogleAuthProvider();

firebase.auth()
.signInWithPopup(provider)
.then((result) => {
  /** @type {firebase.auth.OAuthCredential} */
  var credential = result.credential;      
  var token = credential.accessToken;
  // The signed-in user info.
 let user = result.user;
 module.exports.user=user  /// it says it does not provide user variable when in this ine I am 
 doing it

}etc....

/// it says it does not provide user variable but I do it.Thanks I am new

CodePudding user response:

You don't need to use module.exports at all as far as I know. And you really don't want to mix them with es6 modules.

// google-auth.js

export function login() {
  const provider = new firebase.auth.GoogleAuthProvider();
  return firebase.auth()
    .signInWithPopup(provider)
    .then((result) => {
      const credential = result.credential;      
      const token = credential.accessToken;
      const user = result.user;
      return user; 
    })
    .catch(error => {
      // you deal with errors that happen here
    })
}

You get the user object by returning it from the function. The function returns a promise though so, if you try and do something like const user = login() it's not going to work To import the function into another file and use it in a way that you can access the user object, you'd do something like this:

// login.js

import { login } from './path/to/google-auth.js'

const authInstance = login();

From the official docs:

import { getAuth, signInWithPopup, GoogleAuthProvider } from "firebase/auth";

const auth = getAuth();
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 = credential.accessToken;
    // The signed-in user info.
    const user = result.user;
    // ...
  }).catch((error) => {
    // Handle Errors here.
    const errorCode = error.code;
    const errorMessage = error.message;
    // The email of the user's account used.
    const email = error.email;
    // The AuthCredential type that was used.
    const credential = GoogleAuthProvider.credentialFromError(error);
    // ...
  });
  • Related