var tempErrorCreds; var tempProviderName; // This is being called directly from unity. function getSignInResults(successCallback, errorCallback) { firebase.auth().getRedirectResult().then( (result) => onFirebaseSignInSuccess(successCallback, errorCallback), (err) => onFirebaseSignInError(err, errorCallback)); } // This is being called directly from unity. function retrieveIdToken(successCallback, errorCallback) { if(firebase.auth().currentUser === null){ if(errorCallback !== null) errorCallback("User is null"); return; } firebase.auth().currentUser.getIdToken().then(function (idToken) { var resultObj = { token: idToken, displayName: firebase.auth().currentUser.displayName }; if (successCallback !== undefined) { successCallback(resultObj); } }) .catch(function (error) { console.log(error); if (errorCallback !== undefined) errorCallback(error.message); }); } function anonymousLogin(successCallback, errorCallback) { var resultObj = { token: "", displayName: "guest" }; if (successCallback !== undefined) { successCallback(resultObj); } } /** * This is being called directly from unity. * Use firebase auth. * @param providerName for example - Google * @param successCallback * @param errorCallback * @param useRedirect Use redirect auth or popup. Redirect the page to google auth, or open a popup for the auth. * For the pc version (embedded browser) we use redirect, but for the webgl version we use a popup. */ function firebaseLogin(providerName, successCallback, errorCallback, useRedirect=false) { if (providerName === "anonymous") { anonymousLogin(successCallback, errorCallback); return; } var user = firebase.auth().currentUser; if(user != null && !user.isAnonymous){ retrieveIdToken(successCallback, errorCallback); return; } var provider = getProvider(providerName); firebase.auth().useDeviceLanguage(); if (useRedirect) { firebase.auth().signInWithRedirect(provider); } else { firebase.auth().signInWithPopup(provider) .then((result) => onFirebaseSignInSuccess(successCallback, errorCallback)) .catch((err) => onFirebaseSignInError(err, errorCallback)); } } function onFirebaseSignInSuccess (successCallback, errorCallback) { console.log("Successful sign in"); retrieveIdToken(successCallback, errorCallback); } function onFirebaseSignInError(error, errorCallback) { // Handle Errors here. var errorCode = error.code; var errorMessage = error.message; // The email of the user's account used. var email = error.email; // The firebase.auth.AuthCredential type that was used. tempErrorCreds = error.credential; console.log(error); if (errorCallback !== undefined) errorCallback(error.message); if (errorCode === 'auth/account-exists-with-different-credential') { // User's email already exists. // Get sign-in methods for this email. firebase.auth().fetchSignInMethodsForEmail(email).then(function (methods) { // the first method in the list will be the "recommended" method to use. if (methods.length == 0) return; // Sign in to provider. tempProviderName = methods[0].trim(); setModalContent("generalModalContent", "
Please press the button to login: