Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Firebase Auth Anonymous Login

When using Firebase Auth Anonymous Account it occasionally creates a new UserID in the system and sometimes it uses the same UserID. I really want this to create the same UserID everytime so the anonymous user can still maintain the same progress/data in the app. This is actually the reason I started using Firebase was for this feature. How can I always maintain an anonymous account to keep the same UserID even after relaunching the app, etc.?

I want the user to always get the same ID everytime they play as a guest. There is apps that I have seen that even persist after uninstall/reinstall. What are the situations in which the user will get a new ID?

Edit: After implementing firebase Auth as suggested it will maintain the Anonymous UserID unless I completely uninstall the app and reinstall. Then the Anonymous UserID is no longer detected which means the user will no longer have their Guest game data. Also, suppose the user is signed in as a guest and chooses to logout (ie. auth.Signout()) then they will also not be able to access their original Guest game data again. Am I still missing something here or does Firebase Auth not achieve my original intentions?

like image 301
Coop Avatar asked Jan 19 '17 03:01

Coop


People also ask

What is Firebase anonymous Login?

You can use Firebase Authentication to create and use temporary anonymous accounts to authenticate with Firebase. These temporary anonymous accounts can be used to allow users who haven't yet signed up to your app to work with data protected by security rules.

Can you use Firebase without authentication?

No Firebase Authentication…To use the Firebase Storage we need to authenticate a user via Firebase authentication. The default security rules require users to be authenticated. Firebase Storage is basically a powerful and simple object storage, in which you can store your files easily.

What is anonymous authentication?

Anonymous authentication gives users access to the public areas of your Web or FTP site without prompting them for a user name or password. By default, the IUSR account, which was introduced in IIS 7.0 and replaces the IIS 6.0 IUSR_computername account, is used to allow anonymous access.


2 Answers

So, in my case I wanted to show a login screen with signup but also the option to Skip login. If the user skips the login multiple times, I was doing signInAnonymous which I though it was reusing the user, but no.

So I solved it like this:

componentDidMount() {      this.unsubscriber = firebase.auth().onAuthStateChanged((user) => {       this.setState({ user: user, loadingUser: false}, () => {         if (this.state.user != null && this.state.user.isAnonymous == false)           this.startApp();       });     });    }     skip = () => {     this.setState({loading: true}, () => {       if (this.state.user != null && this.state.user.isAnonymous == true)         this.startApp();       else {         firebase.auth().signInAnonymouslyAndRetrieveData().then((result) => {           this.setState({user: result.user}, () => {             this.startApp()           })         })         .catch(err => {           this.setState({loading: false});           alert(err)         });       }      });    } 

Code is React Native but it should help you see the logic. I wait for the auth state and store the user temporarly. If it is not anonymous I start the home screen. If it is anonymous I give the user the option to register. If it still wants to skip, then I just start the app so I can re use the ID.

like image 133
sebastianf182 Avatar answered Sep 23 '22 08:09

sebastianf182


You can use the Custom Auth System. Since the "Play as Guest" will only be specified for a special device. You can use Device ID as the CustomToken and then call Firebase Authentication Method:

auth.SignInWithCustomTokenAsync(custom_token).ContinueWith{.......

You can provide "custom_token" as the Device ID. You can get Device ID by:

string deviceID = SystemInfo.deviceUniqueIdentifier;

Hope this helps...

like image 37
Faizan Khan Avatar answered Sep 20 '22 08:09

Faizan Khan