android - Verified user with Firebase -
i want create login user has put his/her mail address , verify via email. using firebase have code far:
when user clicks button login after putting mail in field. try create new account (password random don't need it). if doesn't exists send verification mail. if account exists check checkifverifieduser if user verified account clicking mail or not.
firebaseauth.createuserwithemailandpassword(email, math.random() + "").addoncompletelistener(new oncompletelistener<authresult>() { @override public void oncomplete(@nonnull task<authresult> task) { if (task.issuccessful()) { firebaseuser user = firebaseauth.getcurrentuser(); user.sendemailverification().addoncompletelistener((activity) context, new oncompletelistener() { @override public void oncomplete(@nonnull task task) { if (task.issuccessful()) { toast.maketext(context, "we sent mail, please verify", toast.length_long).show(); } else { toast.maketext(context, "error", toast.length_long).show(); } } }); checkifverifieduser(email); } else { progressdialog.dismiss(); try { throw task.getexception(); } catch (firebaseauthusercollisionexception e) { // in case account exists checkifverifieduser(email); } catch (exception e) { toast.maketext(context, r.string.error_auth, toast.length_short).show(); } } } });
here method call:
private void checkifverifieduser(string email){ final firebaseuser user = firebaseauth.getcurrentuser(); intent intent = new intent(context, homeactivity.class); if(user != null){ user.reload(); // if user created, check if account verified if(user.isemailverified()) { intent.putextra(intentenum.alreadyregistered.getcode(), true); }else{ intent.putextra(intentenum.alreadyregistered.getcode(), false); } }else{ intent.putextra(intentenum.alreadyregistered.getcode(), false); } ---rest of code--- } the problem either firebaseauth.getcurrentuser() == null or user.isemailverified() false (even if click link in email sent).
could me this? thanks!
to solve this, need call checkifverifieduser() method inside oncomplete() method , inside if statement.
hope helps.
Comments
Post a Comment