Skip to content
This repository has been archived by the owner on May 17, 2022. It is now read-only.

D.2 Init Authentication

Hadi Tavakoli edited this page Sep 26, 2018 · 7 revisions

Initialize Firebase Authentication

You can initialize the Authentication by calling Auth.init(); As soon as you initialized the firebaseAuth.ane in your project, you will be ready to signup or signin users!

NOTE: Make sure you have already initialized the Firebase core before trying any other Firebase child ANEs.

Check current auth state

check to see if the user is currently signed in and if it is, get user's current information

if (Auth.isLoggin)
{
	trace("user is logged in");
	getUserInfo();
}
else
{
	trace("user is NOT logged in");
}

function getUserInfo():void
{
	trace("displayName = " +		FirebaseUser.displayName);
	trace("email = " +  			FirebaseUser.email);
	trace("photoUrl = " + 			FirebaseUser.photoUrl);
	trace("phoneNumber = " + 		FirebaseUser.phoneNumber);
	trace("providerId = " + 		FirebaseUser.providerId);
	trace("userId = " + 			FirebaseUser.userId);
	trace("isEmailVerified = " +		FirebaseUser.isEmailVerified);

	if(FirebaseUser.metadata)
	{
		trace("creationTime = " + 	new Date(FirebaseUser.metadata.creationTime).toLocaleString());
		trace("lastSignInTime = " + 	new Date(FirebaseUser.metadata.lastSignInTime).toLocaleString());
	}
	
	var userInfoOnProviders:UserInfo;
	for (var i:int = 0; i < FirebaseUser.providersData.length; i++)
	{
		userInfoOnProviders = FirebaseUser.providersData[i];
		trace("-------------")
		trace("providerId = " + 		userInfoOnProviders.providerId);
		trace("displayName = " + 		userInfoOnProviders.displayName);
		trace("email = " +   			userInfoOnProviders.email);
		trace("photoUrl = " + 			userInfoOnProviders.photoUrl);
		trace("phoneNumber = " + 		userInfoOnProviders.phoneNumber);
		trace("userId = " + 			userInfoOnProviders.userId);
		trace("-------------")
	}
}

Listen for authentication state

After initializing the Auth with Auth.init(), you can listen to Auth changes by watching this event: AUTH_STATE_CHANGED

Auth.listener.addEventListener(AuthEvents.AUTH_STATE_CHANGED, onAuthStateChanged);

function onAuthStateChanged(e:AuthEvents):void
{
	// check if the user info is available or not
	if (FirebaseUser.isAvailable)
	{
		trace("user is logged in");
		getUserInfo();
		
		// when you are logged in, it's a good time to add user listeners
		FirebaseUser.listener.addEventListener(FirebaseUserEvents.RELOAD_USER_INFO, 			onReloadUserInfo);
		FirebaseUser.listener.addEventListener(FirebaseUserEvents.REAUTHENTICATE_RESULT, 		onReauthenticate);
		FirebaseUser.listener.addEventListener(FirebaseUserEvents.GET_USER_TOKEN, 			onGetUserToken);
		FirebaseUser.listener.addEventListener(FirebaseUserEvents.UNLINK_RESULT, 			onUnlink);
		FirebaseUser.listener.addEventListener(FirebaseUserEvents.LINK_WITH_RESULT, 			onLink);
		FirebaseUser.listener.addEventListener(FirebaseUserEvents.PROFILE_UPDATE_RESULT, 		onProfileUpdate);
		FirebaseUser.listener.addEventListener(FirebaseUserEvents.PASSWORD_UPDATE_RESULT, 		onPassUpdate);
		FirebaseUser.listener.addEventListener(FirebaseUserEvents.EMAIL_UPDATE_RESULT, 			onEmailUpdate);
		FirebaseUser.listener.addEventListener(FirebaseUserEvents.DELETE_USER_RESULT, 			onDeleteUser);
		FirebaseUser.listener.addEventListener(FirebaseUserEvents.SEND_EMAIL_VERIFICATION_RESULT, 	onSendEmailVerification);
		FirebaseUser.listener.addEventListener(FirebaseUserEvents.PHONE_UPDATE_RESULT, 			onPhoneUpdate);
	}
	else
	{
		C.log("user is NOT logged in");
		
		// When logged out, it's a good idea to remove the user listeners
		FirebaseUser.listener.removeEventListener(FirebaseUserEvents.RELOAD_USER_INFO, 			onReloadUserInfo);
		FirebaseUser.listener.removeEventListener(FirebaseUserEvents.REAUTHENTICATE_RESULT, 		onReauthenticate);
		FirebaseUser.listener.removeEventListener(FirebaseUserEvents.GET_USER_TOKEN, 			onGetUserToken);
		FirebaseUser.listener.removeEventListener(FirebaseUserEvents.UNLINK_RESULT, 			onUnlink);
		FirebaseUser.listener.removeEventListener(FirebaseUserEvents.LINK_WITH_RESULT, 			onLink);
		FirebaseUser.listener.removeEventListener(FirebaseUserEvents.PROFILE_UPDATE_RESULT, 		onProfileUpdate);
		FirebaseUser.listener.removeEventListener(FirebaseUserEvents.PASSWORD_UPDATE_RESULT, 		onPassUpdate);
		FirebaseUser.listener.removeEventListener(FirebaseUserEvents.EMAIL_UPDATE_RESULT, 		onEmailUpdate);
		FirebaseUser.listener.removeEventListener(FirebaseUserEvents.DELETE_USER_RESULT, 		onDeleteUser);
		FirebaseUser.listener.removeEventListener(FirebaseUserEvents.SEND_EMAIL_VERIFICATION_RESULT, 	onSendEmailVerification);
		FirebaseUser.listener.removeEventListener(FirebaseUserEvents.PHONE_UPDATE_RESULT, 		onPhoneUpdate);
	}
}

Sign up new users

Create a form that allows new users to register with your app using their email address and a password. When a user completes the form, validate the email address and password provided by the user, then pass them to the createUserWithEmailAndPassword method:

// listen to new user creation result
Auth.listener.addEventListener(AuthEvents.CREATE_NEW_USER_RESULT, onCreateNewUserResult);

// send email and password to create a new user
Auth.createUserWithEmailAndPassword("[email protected]", "123456");

function onCreateNewUserResult(e:AuthEvents):void
{
	trace("onCreateNewUserResult result=" + e.result, " msg=" + e.msg);

	if(e.result == Auth.RESULT_SUCCESS)
	{
		trace("new user created successfully");

		if(e.additionalUserInfo)
		{
			trace("-------------- additionalUserInfo ------------");
			trace("providerId: " + e.additionalUserInfo.providerId);
			trace("username: " + e.additionalUserInfo.username);
			trace("isNewUser: " + e.additionalUserInfo.isNewUser);
			trace("profile: " + JSON.stringify(e.additionalUserInfo.profile));
			trace("----------------------------------------------");
		}

		/*
			When a new user is created, it will automatically sign in. That means the
			AUTH_STATE_CHANGED event will be dispatched which you can use to read user's
			information.
		*/
	}
	else
	{
		trace("onCreateNewUserResult: " + e.msg);
	}
}

Sign in existing users

Create a form that allows existing users to sign in using their email address and password. When a user completes the form, call Auth.signIn

// listen to SIGN_IN_RESULT event to know how the process goes
Auth.listener.addEventListener(AuthEvents.SIGN_IN_RESULT, onSignInResult);

// create a new authProvider object first
var authProvider:AuthProvider = new AuthProvider();

// decide what kind of credential this authProvider instance will hold
authProvider.setEmailPassAuthProvider("[email protected]", "123456");

// and finally feed the Auth.signIn method with the parsed credential info from the authProvider instance.
Auth.signIn(authProvider.getCredential());

function onSignInResult(e:AuthEvents):void
{
	if(e.result == Auth.RESULT_SUCCESS)
	{
		trace("signed in successfully");

		if(e.additionalUserInfo)
		{
			trace("-------------- additionalUserInfo ------------");
			trace("providerId: " + e.additionalUserInfo.providerId);
			trace("username: " + e.additionalUserInfo.username);
			trace("isNewUser: " + e.additionalUserInfo.isNewUser);
			trace("profile: " + JSON.stringify(e.additionalUserInfo.profile));
			trace("----------------------------------------------");
		}
		
		/*
			When sign in is successful, the AUTH_STATE_CHANGED event will be dispatched which
			you can use to read user's information.
		*/
	}
	else
	{
		trace("onSignInResult: " + e.msg);
	}
}

Sign out

To sign out a user, simply call Auth.signOut(); when signout happens, AUTH_STATE_CHANGED will be invoked again.

Introduction to Firebase ANEs collection for Adobe Air apps


Get Started with Firebase Core in AIR

  1. Prerequisites
  2. Add Firebase to your app
  3. Add the Firebase SDK
  4. Init Firebase Core
  5. Available ANEs
  6. Managing Firebase iid

Get Started with Analytics

  1. Add Analytics ANE
  2. Init Analytics ANE
  3. Log Events
  4. Set User Properties

Get Started with Crashlytics

  1. Add Crashlytics ANE
  2. Test Your Implementation
  3. Customize Crash Reports
  4. Upload .dSYM for iOS apps

Get Started with DynamicLinks

  1. Add DynamicLinks ANE
  2. Init DynamicLinks ANE
  3. Create DynamicLinks
  4. Receive DynamicLinks
  5. View Analytics

Get Started with Authentication

  1. Add Authentication
  2. Init Authentication
  3. Manage Users
  4. Phone Number
  5. Custom Auth
  6. Anonymous Auth
  7. State in Email Actions
  8. Email Link Authentication

Get Started with FCM + OneSignal

  1. Add FCM ANE
  2. Init FCM ANE
  3. Send Your 1st Message
  4. Send Msg to Topics
  5. Understanding FCM Messages
  6. init OneSignal

Get Started with Firestore

  1. Add Firestore
  2. Init Firestore
  3. Add Data
  4. Transactions & Batches
  5. Delete Data
  6. Manage the Console
  7. Get Data
  8. Get Realtime Updates
  9. Simple and Compound
  10. Order and Limit Data
  11. Paginate Data
  12. Manage Indexes
  13. Secure Data
  14. Offline Data
  15. Where to Go From Here

Get Started with Realtime Database

  1. Add Realtime Database
  2. Init Realtime Database
  3. Structure Your Database
  4. Save Data
  5. Retrieve Data
  6. Enable Offline Capabilities

Get Started with Remote Config

  1. Parameters and Conditions
  2. Add Remote Config
  3. Init Remote Config

Get Started with Performance

  1. Add Performance ANE
  2. Init & Start Monitoring

Get Started with Storage

  1. Add Storage ANE
  2. Init Storage ANE
  3. Upload Files to Storage
  4. Download Files to Air
  5. Use File Metadata
  6. Delete Files

Get Started with Functions

  1. Write & Deploy Functions
  2. Add Functions ANE
  3. Init Functions
Clone this wiki locally