āĻāĻĒāύāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻĢā§āύ⧠āĻāĻāĻāĻŋ SMS āĻŦāĻžāϰā§āϤāĻž āĻĒāĻžāĻ āĻŋāϝāĻŧā§ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻā§ āϏāĻžāĻāύ āĻāύ āĻāϰāϤ⧠Firebase Authentication āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύāĨ¤ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āĻāϏāĻāĻŽāĻāϏ āĻŦāĻžāϰā§āϤāĻžāϝāĻŧ āĻĨāĻžāĻāĻž āĻāĻāĻāĻŋ āĻāĻāĻāĻžāϞā§āύ āĻā§āĻĄ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āϏāĻžāĻāύ āĻāύ āĻāϰā§āĨ¤
āĻāĻĒāύāĻžāϰ āĻ ā§āϝāĻžāĻĒā§ āĻĢā§āύ āύāĻŽā§āĻŦāϰ āϏāĻžāĻāύ-āĻāύ āϝā§āĻ āĻāϰāĻžāϰ āϏāĻŦāĻā§āϝāĻŧā§ āϏāĻšāĻ āĻāĻĒāĻžāϝāĻŧ āĻšāϞ FirebaseUI āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž, āϝāĻžāϰ āĻŽāϧā§āϝ⧠āĻāĻāĻāĻŋ āĻĄā§āϰāĻĒ-āĻāύ āϏāĻžāĻāύ-āĻāύ āĻāĻāĻā§āĻ āϰāϝāĻŧā§āĻā§ āϝāĻž āĻĢā§āύ āύāĻŽā§āĻŦāϰ āϏāĻžāĻāύ-āĻāύ āĻāϰāĻžāϰ āĻĒāĻžāĻļāĻžāĻĒāĻžāĻļāĻŋ āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ-āĻāĻŋāϤā§āϤāĻŋāĻ āĻāĻŦāĻ āĻĢā§āĻĄāĻžāϰā§āĻā§āĻĄ āϏāĻžāĻāύ-āĻāύ āĻāϰāĻžāϰ āĻāύā§āϝ āϏāĻžāĻāύ-āĻāύ āĻĒā§āϰāĻŦāĻžāĻš āĻĒā§āϰāϝāĻŧā§āĻ āĻāϰā§āĨ¤ āĻāĻ āĻĻāϏā§āϤāĻžāĻŦā§āĻāĻāĻŋ āĻŦāϰā§āĻŖāύāĻž āĻāϰ⧠āϝ⧠āĻā§āĻāĻžāĻŦā§ Firebase SDK āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻāĻāĻāĻŋ āĻĢā§āύ āύāĻŽā§āĻŦāϰ āϏāĻžāĻāύ-āĻāύ āĻĢā§āϞ⧠āĻŦāĻžāϏā§āϤāĻŦāĻžāϝāĻŧāύ āĻāϰāϤ⧠āĻšāϝāĻŧāĨ¤
āĻāĻĒāύāĻŋ āĻļā§āϰ⧠āĻāϰāĻžāϰ āĻāĻā§
āĻāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻāϤāĻŋāĻŽāϧā§āϝ⧠āύāĻž āĻāϰ⧠āĻĨāĻžāĻā§āύ, āϤāĻžāĻšāϞ⧠Firebase āĻāύāϏā§āϞ āĻĨā§āĻā§ āĻāĻĒāύāĻžāϰ āĻāĻžāĻāĻžāϏā§āĻā§āϰāĻŋāĻĒā§āĻ āĻĒā§āϰāĻā§āĻā§āĻā§ Firebase āϝā§āĻ āĻāϰā§āύ-āĻ āĻŦāϰā§āĻŖāĻŋāϤ āĻĒā§āϰāĻžāĻĨāĻŽāĻŋāĻ āϏā§āύāĻŋāĻĒā§āĻāĻāĻŋ āĻāĻĒāύāĻžāϰ āĻĒā§āϰāĻāϞā§āĻĒā§ āĻ āύā§āϞāĻŋāĻĒāĻŋ āĻāϰā§āύāĨ¤āύāĻŋāϰāĻžāĻĒāϤā§āϤāĻž āĻāĻĻā§āĻŦā§āĻ
āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āĻāĻāĻāĻŋ āĻĢā§āύ āύāĻŽā§āĻŦāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ, āϏā§āĻŦāĻŋāϧāĻžāĻāύāĻ āĻšāϞā§āĻ, āĻ āύā§āϝāĻžāύā§āϝ āĻāĻĒāϞāĻŦā§āϧ āĻĒāĻĻā§āϧāϤāĻŋāϰ āϤā§āϞāύāĻžāϝāĻŧ āĻāĻŽ āύāĻŋāϰāĻžāĻĒāĻĻ, āĻāĻžāϰāĻŖ āĻāĻāĻāĻŋ āĻĢā§āύ āύāĻŽā§āĻŦāϰā§āϰ āĻĻāĻāϞ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻĻā§āϰ āĻŽāϧā§āϝ⧠āϏāĻšāĻā§āĻ āĻšāϏā§āϤāĻžāύā§āϤāϰ āĻāϰāĻž āϝā§āϤ⧠āĻĒāĻžāϰā§āĨ¤ āĻāĻāĻžāĻĄāĻŧāĻžāĻ, āĻāĻāĻžāϧāĻŋāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻĒā§āϰā§āĻĢāĻžāĻāϞ āϏāĻš āĻĄāĻŋāĻāĻžāĻāϏāĻā§āϞāĻŋāϤā§, āϝ⧠āĻā§āύāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āϝ⧠āĻāϏāĻāĻŽāĻāϏ āĻŦāĻžāϰā§āϤāĻžāĻā§āϞāĻŋ āĻĒā§āϤ⧠āĻĒāĻžāϰ⧠āϏ⧠āĻĄāĻŋāĻāĻžāĻāϏā§āϰ āĻĢā§āύ āύāĻŽā§āĻŦāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻāĻāĻāĻŋ āĻ ā§āϝāĻžāĻāĻžāĻāύā§āĻā§ āϏāĻžāĻāύ āĻāύ āĻāϰāϤ⧠āĻĒāĻžāϰā§ā§ˇ
āĻāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻāĻĒāύāĻžāϰ āĻ ā§āϝāĻžāĻĒā§ āĻĢā§āύ āύāĻŽā§āĻŦāϰ āĻāĻŋāϤā§āϤāĻŋāĻ āϏāĻžāĻāύ-āĻāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύ, āϤāĻžāĻšāϞ⧠āĻāĻĒāύāĻžāĻā§ āĻāϰāĻ āύāĻŋāϰāĻžāĻĒāĻĻ āϏāĻžāĻāύ-āĻāύ āĻĒāĻĻā§āϧāϤāĻŋāϰ āĻĒāĻžāĻļāĻžāĻĒāĻžāĻļāĻŋ āĻāĻāĻŋ āĻ āĻĢāĻžāϰ āĻāϰāĻž āĻāĻāĻŋāϤ āĻāĻŦāĻ āĻĢā§āύ āύāĻŽā§āĻŦāϰ āϏāĻžāĻāύ-āĻāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻžāϰ āύāĻŋāϰāĻžāĻĒāϤā§āϤāĻž āĻā§āϰā§āĻĄāĻ āĻĢ āϏāĻŽā§āĻĒāϰā§āĻā§ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻĻā§āϰ āĻāĻžāύāĻžāύ⧠āĻāĻāĻŋāϤāĨ¤
āĻāĻĒāύāĻžāϰ Firebase āĻĒā§āϰāĻāϞā§āĻĒā§āϰ āĻāύā§āϝ āĻĢā§āύ āύāĻŽā§āĻŦāϰ āϏāĻžāĻāύ-āĻāύ āϏāĻā§āώāĻŽ āĻāϰā§āύ
SMS āĻāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻĻā§āϰ āϏāĻžāĻāύ āĻāύ āĻāϰāϤā§, āĻāĻĒāύāĻžāĻā§ āĻĒā§āϰāĻĨāĻŽā§ āĻāĻĒāύāĻžāϰ Firebase āĻĒā§āϰāĻāϞā§āĻĒā§āϰ āĻāύā§āϝ āĻĢā§āύ āύāĻŽā§āĻŦāϰ āϏāĻžāĻāύ-āĻāύ āĻĒāĻĻā§āϧāϤāĻŋ āϏāĻā§āϰāĻŋāϝāĻŧ āĻāϰāϤ⧠āĻšāĻŦā§:
- Firebase āĻāύāϏā§āϞ⧠, āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āĻŦāĻŋāĻāĻžāĻāĻāĻŋ āĻā§āϞā§āύāĨ¤
- āϏāĻžāĻāύ-āĻāύ āĻĒāĻĻā§āϧāϤāĻŋ āĻĒā§āώā§āĻ āĻžāϝāĻŧ, āĻĢā§āύ āύāĻŽā§āĻŦāϰ āϏāĻžāĻāύ-āĻāύ āĻĒāĻĻā§āϧāϤāĻŋ āϏāĻā§āώāĻŽ āĻāϰā§āύāĨ¤
- āĻāĻā§āĻāĻŋāĻ : āϏā§āĻāĻŋāĻāϏ āĻĒā§āώā§āĻ āĻžāϝāĻŧ, āĻāĻĒāύāĻŋ āϝ⧠āĻ āĻā§āĻāϞ⧠SMS āĻŦāĻžāϰā§āϤāĻž āĻĒāĻžāĻ āĻžāύā§āϰ āĻ āύā§āĻŽāϤāĻŋ āĻĻāĻŋāϤ⧠āĻŦāĻž āĻ āϏā§āĻŦā§āĻāĻžāϰ āĻāϰāϤ⧠āĻāĻžāύ āϏā§āĻā§āϞāĻŋāϰ āĻāĻĒāϰ āĻāĻāĻāĻŋ āύā§āϤāĻŋ āϏā§āĻ āĻāϰā§āύ⧎ āĻāĻāĻāĻŋ SMS āĻ āĻā§āĻāϞ āύā§āϤāĻŋ āϏā§āĻ āĻāϰāĻž āĻāĻĒāύāĻžāϰ āĻ ā§āϝāĻžāĻĒāĻā§āϞāĻŋāĻā§ SMS āĻ āĻĒāĻŦā§āϝāĻŦāĻšāĻžāϰ āĻĨā§āĻā§ āϰāĻā§āώāĻž āĻāϰāϤ⧠āϏāĻžāĻšāĻžāϝā§āϝ āĻāϰāϤ⧠āĻĒāĻžāϰā§ā§ˇ
- āĻāĻāĻ āĻĒā§āώā§āĻ āĻžāϝāĻŧ, āϝ⧠āĻĄā§āĻŽā§āύāĻāĻŋ āĻāĻĒāύāĻžāϰ āĻ ā§āϝāĻžāĻĒ āĻšā§āϏā§āĻ āĻāϰāĻŦā§ āϏā§āĻāĻŋ āϝāĻĻāĻŋ OAuth āϰāĻŋāĻĄāĻžāĻāϰā§āĻā§āĻ āĻĄā§āĻŽā§āύ āĻŦāĻŋāĻāĻžāĻā§ āϤāĻžāϞāĻŋāĻāĻžāĻā§āĻā§āϤ āύāĻž āĻĨāĻžāĻā§, āϤāĻžāĻšāϞ⧠āĻāĻĒāύāĻžāϰ āĻĄā§āĻŽā§āύ āϝā§āĻ āĻāϰā§āύāĨ¤ āύā§āĻ āĻāϰā§āύ āϝ⧠āϏā§āĻĨāĻžāύā§āϝāĻŧ āĻšā§āϏā§āĻ āĻĢā§āύ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖā§āϰ āĻāĻĻā§āĻĻā§āĻļā§āϝ⧠āĻšā§āϏā§āĻ āĻāϰāĻž āĻĄā§āĻŽā§āύ āĻšāĻŋāϏāĻžāĻŦā§ āĻ āύā§āĻŽā§āĻĻāĻŋāϤ āύāϝāĻŧāĨ¤
reCAPTCHA āϝāĻžāĻāĻžāĻāĻāĻžāϰ⧠āϏā§āĻ āĻāĻĒ āĻāϰā§āύ
āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻĻā§āϰ āĻĢā§āύ āύāĻŽā§āĻŦāϰ āĻĻāĻŋāϝāĻŧā§ āϏāĻžāĻāύ āĻāύ āĻāϰāĻžāϰ āĻāĻā§, āĻāĻĒāύāĻžāĻā§ āĻ āĻŦāĻļā§āϝāĻ Firebase-āĻāϰ reCAPTCHA āϝāĻžāĻāĻžāĻāĻāĻžāϰ⧠āϏā§āĻ āĻāĻĒ āĻāϰāϤ⧠āĻšāĻŦā§āĨ¤ āĻĢāĻžāϝāĻŧāĻžāϰāĻŦā§āϏ āĻ āĻĒāĻŦā§āϝāĻŦāĻšāĻžāϰ āϰā§āϧ āĻāϰāϤ⧠reCAPTCHA āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§, āϝā§āĻŽāύ āĻāĻĒāύāĻžāϰ āĻ ā§āϝāĻžāĻĒā§āϰ āĻ āύā§āĻŽā§āĻĻāĻŋāϤ āĻĄā§āĻŽā§āύāĻā§āϞāĻŋāϰ āĻāĻāĻāĻŋ āĻĨā§āĻā§ āĻĢā§āύ āύāĻŽā§āĻŦāϰ āϝāĻžāĻāĻžāĻāĻāϰāĻŖā§āϰ āĻ āύā§āϰā§āϧ āĻāϏā§āĻā§ āϤāĻž āύāĻŋāĻļā§āĻāĻŋāϤ āĻāϰā§āĨ¤
āĻāĻĒāύāĻžāĻā§ āĻŽā§āϝāĻžāύā§āϝāĻŧāĻžāϞāĻŋ āĻāĻāĻāĻŋ reCAPTCHA āĻā§āϞāĻžāϝāĻŧā§āύā§āĻ āϏā§āĻ āĻāĻĒ āĻāϰāϤ⧠āĻšāĻŦā§ āύāĻž; āĻāĻĒāύāĻŋ āϝāĻāύ Firebase SDK-āĻāϰ RecaptchaVerifier
āĻ
āĻŦāĻā§āĻā§āĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύ, āϤāĻāύ Firebase āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧāĻāĻžāĻŦā§ āϝā§āĻā§āύ⧠āĻĒā§āϰāϝāĻŧā§āĻāύā§āϝāĻŧ āĻā§āϞāĻžāϝāĻŧā§āύā§āĻ āĻā§ āĻāĻŦāĻ āĻā§āĻĒāύā§āϝāĻŧāϤāĻž āϤā§āϰāĻŋ āĻāϰ⧠āĻāĻŦāĻ āĻĒāϰāĻŋāĻāĻžāϞāύāĻž āĻāϰā§āĨ¤
RecaptchaVerifier
āĻ
āĻŦāĻā§āĻā§āĻāĻāĻŋ āĻ
āĻĻā§āĻļā§āϝ reCAPTCHA āϏāĻŽāϰā§āĻĨāύ āĻāϰā§, āϝāĻž āĻĒā§āϰāĻžāϝāĻŧāĻļāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻā§ āĻā§āύ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻ
ā§āϝāĻžāĻāĻļāύā§āϰ āĻĒā§āϰāϝāĻŧā§āĻāύ āĻāĻžāĻĄāĻŧāĻžāĻ āϝāĻžāĻāĻžāĻ āĻāϰāϤ⧠āĻĒāĻžāϰā§, āϏā§āĻāϏāĻžāĻĨā§ reCAPTCHA āĻāĻāĻā§āĻ, āϝāĻž āϏāĻĢāϞāĻāĻžāĻŦā§ āϏāĻŽā§āĻĒā§āϰā§āĻŖ āĻāϰāĻžāϰ āĻāύā§āϝ āϏāϰā§āĻŦāĻĻāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻŽāĻŋāĻĨāϏā§āĻā§āϰāĻŋāϝāĻŧāĻž āĻĒā§āϰāϝāĻŧā§āĻāύāĨ¤
āĻ āύā§āϤāϰā§āύāĻŋāĻšāĻŋāϤ āϰā§āύā§āĻĄāĻžāϰ āĻāϰāĻž reCAPTCHA reCAPTCHA āϰā§āύā§āĻĄāĻžāϰ āĻāϰāĻžāϰ āĻāĻā§ Auth āĻāύā§āϏāĻā§āϝāĻžāύā§āϏ⧠āĻāĻžāώāĻž āĻā§āĻĄ āĻāĻĒāĻĄā§āĻ āĻāϰ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻĒāĻāύā§āĻĻ āĻ āύā§āϝāĻžāϝāĻŧā§ āϏā§āĻĨāĻžāύā§āϝāĻŧāĻāϰāĻŖ āĻāϰāĻž āϝā§āϤ⧠āĻĒāĻžāϰā§āĨ¤ āĻĒā§āϰā§āĻŦā§āĻā§āϤ āϏā§āĻĨāĻžāύā§āϝāĻŧāĻāϰāĻŖ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻā§ āĻĒāĻžāĻ āĻžāύ⧠āĻāϏāĻāĻŽāĻāϏ āĻŦāĻžāϰā§āϤāĻžāϰ āĻā§āώā§āϤā§āϰā§āĻ āĻĒā§āϰāϝā§āĻā§āϝ āĻšāĻŦā§, āϝāĻžāϰ āĻŽāϧā§āϝ⧠āϝāĻžāĻāĻžāĻāĻāϰāĻŖ āĻā§āĻĄ āĻĨāĻžāĻāĻŦā§āĨ¤
Web
import { getAuth } from "firebase/auth"; const auth = getAuth(); auth.languageCode = 'it'; // To apply the default browser preference instead of explicitly setting it. // auth.useDeviceLanguage();
Web
firebase.auth().languageCode = 'it'; // To apply the default browser preference instead of explicitly setting it. // firebase.auth().useDeviceLanguage();
āĻ āĻĻā§āĻļā§āϝ reCAPTCHA āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύ
āĻāĻāĻāĻŋ āĻ
āĻĻā§āĻļā§āϝ reCAPTCHA āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤā§, āĻāĻĒāύāĻžāϰ āϏāĻžāĻāύ-āĻāύ āĻĢāϰā§āĻŽ āĻāĻŽāĻž āĻĻā§āϝāĻŧ āĻāĻŽāύ āĻŦā§āϤāĻžāĻŽāĻāĻŋāϰ āĻāĻāĻĄāĻŋ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāϰ⧠invisible
āϏā§āĻ āĻāϰāĻž size
āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰ āϏāĻš āĻāĻāĻāĻŋ RecaptchaVerifier
āĻ
āĻŦāĻā§āĻā§āĻ āϤā§āϰāĻŋ āĻāϰā§āύ⧎ āϝā§āĻŽāύ:
Web
import { getAuth, RecaptchaVerifier } from "firebase/auth"; const auth = getAuth(); window.recaptchaVerifier = new RecaptchaVerifier(auth, 'sign-in-button', { 'size': 'invisible', 'callback': (response) => { // reCAPTCHA solved, allow signInWithPhoneNumber. onSignInSubmit(); } });
Web
window.recaptchaVerifier = new firebase.auth.RecaptchaVerifier('sign-in-button', { 'size': 'invisible', 'callback': (response) => { // reCAPTCHA solved, allow signInWithPhoneNumber. onSignInSubmit(); } });
reCAPTCHA āĻāĻāĻā§āĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύ
āĻĻā§āĻļā§āϝāĻŽāĻžāύ reCAPTCHA āĻāĻāĻā§āĻāĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤā§, āĻāĻāĻā§āĻāĻāĻŋ āϧāĻžāϰāĻŖ āĻāϰāĻžāϰ āĻāύā§āϝ āĻāĻĒāύāĻžāϰ āĻĒā§āώā§āĻ āĻžāϝāĻŧ āĻāĻāĻāĻŋ āĻāĻĒāĻžāĻĻāĻžāύ āϤā§āϰāĻŋ āĻāϰā§āύ āĻāĻŦāĻ āϤāĻžāϰāĻĒāϰ⧠āĻāĻāĻāĻŋ RecaptchaVerifier
āĻ
āĻŦāĻā§āĻā§āĻ āϤā§āϰāĻŋ āĻāϰā§āύ, āϝāĻāύ āĻāĻĒāύāĻŋ āĻāĻāĻŋ āĻāϰāĻŦā§āύ āϤāĻāύ āĻāύā§āĻā§āĻāύāĻžāϰāĻāĻŋāϰ ID āĻāϞā§āϞā§āĻ āĻāϰā§āύ⧎ āϝā§āĻŽāύ:
Web
import { getAuth, RecaptchaVerifier } from "firebase/auth"; const auth = getAuth(); window.recaptchaVerifier = new RecaptchaVerifier(auth, 'recaptcha-container', {});
Web
window.recaptchaVerifier = new firebase.auth.RecaptchaVerifier('recaptcha-container');
āĻāĻā§āĻāĻŋāĻ: reCAPTCHA āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāϰā§āύ
āĻāĻĒāύāĻŋ āĻāĻā§āĻāĻŋāĻāĻāĻžāĻŦā§ RecaptchaVerifier
āĻ
āĻŦāĻā§āĻā§āĻā§ āĻāϞāĻŦā§āϝāĻžāĻ āĻĢāĻžāĻāĻļāύ āϏā§āĻ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ āϝāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āϝāĻāύ reCAPTCHA āϏāĻŽāĻžāϧāĻžāύ āĻāϰ⧠āĻŦāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āĻĢāϰā§āĻŽ āĻāĻŽāĻž āĻĻā§āĻāϝāĻŧāĻžāϰ āĻāĻā§ reCAPTCHA āĻŽā§āϝāĻŧāĻžāĻĻ āĻļā§āώ āĻšāϝāĻŧā§ āϝāĻžāϝāĻŧ āϤāĻāύ āĻāϞ āĻāϰāĻž āĻšāϝāĻŧ:
Web
import { getAuth, RecaptchaVerifier } from "firebase/auth"; const auth = getAuth(); window.recaptchaVerifier = new RecaptchaVerifier(auth, 'recaptcha-container', { 'size': 'normal', 'callback': (response) => { // reCAPTCHA solved, allow signInWithPhoneNumber. // ... }, 'expired-callback': () => { // Response expired. Ask user to solve reCAPTCHA again. // ... } });
Web
window.recaptchaVerifier = new firebase.auth.RecaptchaVerifier('recaptcha-container', { 'size': 'normal', 'callback': (response) => { // reCAPTCHA solved, allow signInWithPhoneNumber. // ... }, 'expired-callback': () => { // Response expired. Ask user to solve reCAPTCHA again. // ... } });
āĻāĻā§āĻāĻŋāĻ: reCAPTCHA āĻĒā§āϰāĻŋ-āϰā§āύā§āĻĄāĻžāϰ āĻāϰā§āύ
āĻāĻĒāύāĻŋ āϏāĻžāĻāύ-āĻāύ āĻ
āύā§āϰā§āϧ āĻāĻŽāĻž āĻĻā§āĻāϝāĻŧāĻžāϰ āĻāĻā§ reCAPTCHA āĻĒā§āϰāĻŋ-āϰā§āύā§āĻĄāĻžāϰ āĻāϰāϤ⧠āĻāĻžāĻāϞā§, render
āĻāϞ āĻāϰā§āύ:
Web
recaptchaVerifier.render().then((widgetId) => { window.recaptchaWidgetId = widgetId; });
Web
recaptchaVerifier.render().then((widgetId) => { window.recaptchaWidgetId = widgetId; });
render
āϏāĻŽāĻžāϧāĻžāύā§āϰ āĻĒāϰā§, āĻāĻĒāύāĻŋ reCAPTCHA āĻāϰ āĻāĻāĻā§āĻ āĻāĻāĻĄāĻŋ āĻĒāĻžāĻŦā§āύ, āϝāĻž āĻāĻĒāύāĻŋ reCAPTCHA API āĻ āĻāϞ āĻāϰāϤ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ:
Web
const recaptchaResponse = grecaptcha.getResponse(recaptchaWidgetId);
Web
const recaptchaResponse = grecaptcha.getResponse(recaptchaWidgetId);
āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻĢā§āύ⧠āĻāĻāĻāĻŋ āϝāĻžāĻāĻžāĻāĻāϰāĻŖ āĻā§āĻĄ āĻĒāĻžāĻ āĻžāύ
āĻĢā§āύ āύāĻŽā§āĻŦāϰ āϏāĻžāĻāύ-āĻāύ āĻļā§āϰ⧠āĻāϰāϤā§, āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻā§ āĻāĻāĻāĻŋ āĻāύā§āĻāĻžāϰāĻĢā§āϏ āĻāĻĒāϏā§āĻĨāĻžāĻĒāύ āĻāϰā§āύ āϝāĻž āϤāĻžāĻĻā§āϰ āĻĢā§āύ āύāĻŽā§āĻŦāϰ āĻĒā§āϰāĻĻāĻžāύ āĻāϰāϤ⧠āĻ
āύā§āϰā§āϧ āĻāϰā§, āĻāĻŦāĻ āϤāĻžāϰāĻĒāϰ Firebase āϝāĻžāϤ⧠SMS āĻāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻĢā§āύ⧠āĻāĻāĻāĻŋ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āĻā§āĻĄ āĻĒāĻžāĻ āĻžāϤ⧠āĻ
āύā§āϰā§āϧ āĻāϰāϤ⧠signInWithPhoneNumber
āĻ āĻāϞ āĻāϰā§āύ:
āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻĢā§āύ āύāĻŽā§āĻŦāϰ āĻĒāĻžāύāĨ¤
āĻāĻāύāĻŋ āĻĒā§āϰāϝāĻŧā§āĻāύā§āϝāĻŧāϤāĻž āĻĒāϰāĻŋāĻŦāϰā§āϤāĻŋāϤ āĻšāϝāĻŧ, āĻāĻŋāύā§āϤ⧠āĻāĻāĻāĻŋ āϏāϰā§āĻŦā§āϤā§āϤāĻŽ āĻ āύā§āĻļā§āϞāύ āĻšāĻŋāϏāĻžāĻŦā§ āĻāĻŦāĻ āĻāĻĒāύāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻĻā§āϰ āĻāύā§āϝ āĻĒā§āϰāϤā§āϝāĻžāĻļāĻž āϏā§āĻ āĻāϰāĻžāϰ āĻāύā§āϝ, āĻāĻĒāύāĻžāĻā§ āϤāĻžāĻĻā§āϰ āĻāĻžāύāĻžāύ⧠āĻāĻāĻŋāϤ āϝ⧠āϝāĻĻāĻŋ āϤāĻžāϰāĻž āĻĢā§āύ āϏāĻžāĻāύ-āĻāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§, āϤāĻžāĻšāϞ⧠āϤāĻžāϰāĻž āϝāĻžāĻāĻžāĻāĻāϰāĻŖā§āϰ āĻāύā§āϝ āĻāĻāĻāĻŋ SMS āĻŦāĻžāϰā§āϤāĻž āĻĒā§āϤ⧠āĻĒāĻžāϰ⧠āĻāĻŦāĻ āĻŽāĻžāύ āĻĻāϰ āĻĒā§āϰāϝā§āĻā§āϝāĨ¤
- Call
signInWithPhoneNumber
, āĻāϤ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻĢā§āύ āύāĻŽā§āĻŦāϰ āĻāĻŦāĻ āĻāĻĒāύāĻžāϰ āĻāĻā§ āϤā§āϰāĻŋ āĻāϰāĻžRecaptchaVerifier
āĻĒāĻžāĻ āĻžāύāĨ¤āϝāĻĻāĻŋWeb
import { getAuth, signInWithPhoneNumber } from "firebase/auth"; const phoneNumber = getPhoneNumberFromUserInput(); const appVerifier = window.recaptchaVerifier; const auth = getAuth(); signInWithPhoneNumber(auth, phoneNumber, appVerifier) .then((confirmationResult) => { // SMS sent. Prompt user to type the code from the message, then sign the // user in with confirmationResult.confirm(code). window.confirmationResult = confirmationResult; // ... }).catch((error) => { // Error; SMS not sent // ... });
Web
const phoneNumber = getPhoneNumberFromUserInput(); const appVerifier = window.recaptchaVerifier; firebase.auth().signInWithPhoneNumber(phoneNumber, appVerifier) .then((confirmationResult) => { // SMS sent. Prompt user to type the code from the message, then sign the // user in with confirmationResult.confirm(code). window.confirmationResult = confirmationResult; // ... }).catch((error) => { // Error; SMS not sent // ... });
signInWithPhoneNumber
āĻāϰ āĻĢāϞ⧠āĻā§āύ⧠āϤā§āϰā§āĻāĻŋ āĻšāϝāĻŧ, āϤāĻžāĻšāϞ⧠reCAPTCHA āϰāĻŋāϏā§āĻ āĻāϰā§āύ āϝāĻžāϤ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āĻāĻŦāĻžāϰ āĻā§āώā§āĻāĻž āĻāϰāϤ⧠āĻĒāĻžāϰā§:grecaptcha.reset(window.recaptchaWidgetId); // Or, if you haven't stored the widget ID: window.recaptchaVerifier.render().then(function(widgetId) { grecaptcha.reset(widgetId); });
signInWithPhoneNumber
āĻĒāĻĻā§āϧāϤāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻā§ reCAPTCHA āĻā§āϝāĻžāϞā§āĻā§āĻ āĻāϏā§āϝ⧠āĻāϰ⧠āĻāĻŦāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āĻā§āϝāĻžāϞā§āĻā§āĻāĻāĻŋ āĻĒāĻžāϏ āĻāϰāϞā§, Firebase Authentication āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻĢā§āύ⧠āĻāĻāĻāĻŋ āϝāĻžāĻāĻžāĻāĻāϰāĻŖ āĻā§āĻĄ āϏāĻš āĻāĻāĻāĻŋ SMS āĻŦāĻžāϰā§āϤāĻž āĻĒāĻžāĻ āĻžāϤ⧠āĻ
āύā§āϰā§āϧ āĻāϰā§āĨ¤
āϝāĻžāĻāĻžāĻāĻāϰāĻŖ āĻā§āĻĄ āĻĻāĻŋāϝāĻŧā§ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻā§ āϏāĻžāĻāύ āĻāύ āĻāϰā§āύ
signInWithPhoneNumber
āĻ āĻāϞāĻāĻŋ āϏāĻĢāϞ āĻšāĻāϝāĻŧāĻžāϰ āĻĒāϰ, āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻā§ SMS āĻāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻĒā§āϰāĻžāĻĒā§āϤ āϝāĻžāĻāĻžāĻāĻāϰāĻŖ āĻā§āĻĄāĻāĻŋ āĻāĻžāĻāĻĒ āĻāϰāϤ⧠āĻŦāϞā§āύāĨ¤ āϤāĻžāϰāĻĒāϰ, ConfirmationResult
āĻ
āĻŦāĻā§āĻā§āĻā§āϰ confirm
āĻĒāĻĻā§āϧāϤāĻŋāϤ⧠āĻā§āĻĄāĻāĻŋ āĻĒāĻžāϏ āĻāϰ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻā§ āϏāĻžāĻāύ āĻāύ āĻāϰā§āύ āϝāĻž signInWithPhoneNumber
āĻāϰ āĻĒāϰāĻŋāĻĒā§āϰā§āĻŖāϤāĻž āĻšā§āϝāĻžāύā§āĻĄāϞāĻžāϰ⧠āĻĒāĻžāϏ āĻāϰāĻž āĻšāϝāĻŧā§āĻāĻŋāϞ (āĻ
āϰā§āĻĨāĻžā§, āĻāĻāĻŋ then
āĻŦā§āϞāĻ)āĨ¤ āϝā§āĻŽāύ:
Web
const code = getCodeFromUserInput(); confirmationResult.confirm(code).then((result) => { // User signed in successfully. const user = result.user; // ... }).catch((error) => { // User couldn't sign in (bad verification code?) // ... });
Web
const code = getCodeFromUserInput(); confirmationResult.confirm(code).then((result) => { // User signed in successfully. const user = result.user; // ... }).catch((error) => { // User couldn't sign in (bad verification code?) // ... });
confirm
āĻāϞ āϏāĻĢāϞ āĻšāϞā§, āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āϏāĻĢāϞāĻāĻžāĻŦā§ āϏāĻžāĻāύ āĻāύ āĻāϰā§āĻā§āύāĨ¤
āĻŽāϧā§āϝāĻŦāϰā§āϤ⧠AuthCredential āĻ āĻŦāĻā§āĻā§āĻ āĻĒāĻžāύ
āĻāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻ
ā§āϝāĻžāĻāĻžāĻāύā§āĻā§āϰ āĻāύā§āϝ āĻāĻāĻāĻŋ AuthCredential
āĻ
āĻŦāĻā§āĻā§āĻ āĻĒā§āϤ⧠āĻāĻžāύ, āύāĻŋāĻļā§āĻāĻŋāϤāĻāϰāĻŖā§āϰ āĻĢāϞāĻžāĻĢāϞ āĻĨā§āĻā§ āϝāĻžāĻāĻžāĻāĻāϰāĻŖ āĻā§āĻĄ āĻāĻŦāĻ confirm
āĻāϞ āĻāϰāĻžāϰ āĻĒāϰāĻŋāĻŦāϰā§āϤ⧠PhoneAuthProvider.credential
āĻ āϝāĻžāĻāĻžāĻāĻāϰāĻŖ āĻā§āĻĄāĻāĻŋ āĻĒāĻžāϏ āĻāϰā§āύ:
var credential = firebase.auth.PhoneAuthProvider.credential(confirmationResult.verificationId, code);
āϤāĻžāϰāĻĒāϰ, āĻāĻĒāύāĻŋ āĻļāĻāϏāĻžāĻĒāϤā§āϰā§āϰ āϏāĻžāĻĨā§ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻā§ āϏāĻžāĻāύ āĻāύ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ:
firebase.auth().signInWithCredential(credential);
āĻāĻžāϞā§āĻĒāύāĻŋāĻ āĻĢā§āύ āύāĻŽā§āĻŦāϰ āĻĻāĻŋāϝāĻŧā§ āĻĒāϰā§āĻā§āώāĻž āĻāϰā§āύ
āĻāĻĒāύāĻŋ Firebase āĻāύāϏā§āϞā§āϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻĄā§āĻā§āϞāĻĒāĻŽā§āύā§āĻā§āϰ āĻāύā§āϝ āĻāĻžāϞā§āĻĒāύāĻŋāĻ āĻĢā§āύ āύāĻŽā§āĻŦāϰ āϏā§āĻ āĻāĻĒ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύāĨ¤ āĻāĻžāϞā§āĻĒāύāĻŋāĻ āĻĢā§āύ āύāĻŽā§āĻŦāϰ āĻĻāĻŋāϝāĻŧā§ āĻĒāϰā§āĻā§āώāĻž āĻāϰāĻž āĻāĻ āϏā§āĻŦāĻŋāϧāĻžāĻā§āϞāĻŋ āĻĒā§āϰāĻĻāĻžāύ āĻāϰā§:
- āĻāĻĒāύāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰā§āϰ āĻā§āĻāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āύāĻž āĻāϰ⧠āĻĢā§āύ āύāĻŽā§āĻŦāϰ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āĻĒāϰā§āĻā§āώāĻž āĻāϰā§āύāĨ¤
- āĻāĻāĻāĻŋ āĻĒā§āϰāĻā§āϤ SMS āĻŦāĻžāϰā§āϤāĻž āύāĻž āĻĒāĻžāĻ āĻŋāϝāĻŧā§ āĻĢā§āύ āύāĻŽā§āĻŦāϰ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āĻĒāϰā§āĻā§āώāĻž āĻāϰā§āύāĨ¤
- āĻĨā§āϰā§āĻāϞ āύāĻž āĻšāϝāĻŧā§ āĻāĻāĻ āĻĢā§āύ āύāĻŽā§āĻŦāϰ āĻĻāĻŋāϝāĻŧā§ āĻāĻāĻāĻžāύāĻž āĻĒāϰā§āĻā§āώāĻž āĻāĻžāϞāĻžāύāĨ¤ āĻāĻāĻŋ āĻ ā§āϝāĻžāĻĒ āϏā§āĻā§āϰ āĻĒāϰā§āϝāĻžāϞā§āĻāύāĻž āĻĒā§āϰāĻā§āϰāĻŋāϝāĻŧāĻž āĻāϞāĻžāĻāĻžāϞā§āύ āĻĒā§āϰāϤā§āϝāĻžāĻā§āϝāĻžāύā§āϰ āĻā§āĻāĻāĻŋ āĻāĻŽāĻŋāϝāĻŧā§ āĻĻā§āϝāĻŧ āϝāĻĻāĻŋ āĻĒāϰā§āϝāĻžāϞā§āĻāĻ āĻĒāϰā§āĻā§āώāĻžāϰ āĻāύā§āϝ āĻāĻāĻ āĻĢā§āύ āύāĻŽā§āĻŦāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύāĨ¤
- āĻā§āύāĻ āĻ āϤāĻŋāϰāĻŋāĻā§āϤ āĻĒā§āϰāĻā§āώā§āĻāĻž āĻāĻžāĻĄāĻŧāĻžāĻ āĻŦāĻŋāĻāĻžāĻļā§āϰ āĻĒāϰāĻŋāĻŦā§āĻļā§ āϏāĻšāĻā§āĻ āĻĒāϰā§āĻā§āώāĻž āĻāϰā§āύ, āϝā§āĻŽāύ Google Play āĻĒāϰāĻŋāώā§āĻŦāĻžāĻā§āϞāĻŋ āĻāĻžāĻĄāĻŧāĻžāĻ iOS āϏāĻŋāĻŽā§āϞā§āĻāϰ āĻŦāĻž Android āĻāĻŽā§āϞā§āĻāϰ⧠āĻŦāĻŋāĻāĻžāĻļ āĻāϰāĻžāϰ āĻā§āώāĻŽāϤāĻžāĨ¤
- āĻĒā§āϰā§āĻĄāĻžāĻāĻļāύ āĻāύāĻāĻžāϝāĻŧāϰāύāĻŽā§āύā§āĻā§ āĻĒā§āϰāĻā§āϤ āĻĢā§āύ āύāĻŽā§āĻŦāϰ⧠āϏāĻžāϧāĻžāϰāĻŖāϤ āĻĒā§āϰāϝāĻŧā§āĻ āĻāϰāĻž āύāĻŋāϰāĻžāĻĒāϤā§āϤāĻž āĻā§āĻ āĻĻā§āĻŦāĻžāϰāĻž āĻŦā§āϞāĻ āύāĻž āĻšāϝāĻŧā§ āĻāύā§āĻāĻŋāĻā§āϰā§āĻļāύ āĻĒāϰā§āĻā§āώāĻž āϞāĻŋāĻā§āύāĨ¤
āĻāĻžāϞā§āĻĒāύāĻŋāĻ āĻĢā§āύ āύāĻŽā§āĻŦāϰāĻā§āϞāĻŋ āĻ āĻŦāĻļā§āϝāĻ āĻāĻ āĻĒā§āϰāϝāĻŧā§āĻāύā§āϝāĻŧāϤāĻžāĻā§āϞāĻŋ āĻĒā§āϰāĻŖ āĻāϰāĻŦā§:
- āύāĻŋāĻļā§āĻāĻŋāϤ āĻāϰā§āύ āϝ⧠āĻāĻĒāύāĻŋ āĻāĻŽāύ āĻĢā§āύ āύāĻŽā§āĻŦāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻā§āύ āϝāĻž āĻāϏāϞā§āĻ āĻāĻžāϞā§āĻĒāύāĻŋāĻ, āĻāĻŦāĻ āĻāϤāĻŋāĻŽāϧā§āϝā§āĻ āĻŦāĻŋāĻĻā§āϝāĻŽāĻžāύ āύā§āĻāĨ¤ Firebase Authentication āĻāĻĒāύāĻžāĻā§ āĻāϏāϞ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻĻā§āϰ āĻĻā§āĻŦāĻžāϰāĻž āĻŦā§āϝāĻŦāĻšā§āϤ āĻŦāĻŋāĻĻā§āϝāĻŽāĻžāύ āĻĢā§āύ āύāĻŽā§āĻŦāϰāĻā§āϞāĻŋāĻā§ āĻĒāϰā§āĻā§āώāĻžāϰ āύāĻŽā§āĻŦāϰ āĻšāĻŋāϏāĻžāĻŦā§ āϏā§āĻ āĻāϰāĻžāϰ āĻ āύā§āĻŽāϤāĻŋ āĻĻā§āϝāĻŧ āύāĻžāĨ¤ āĻāĻāĻāĻŋ āĻŦāĻŋāĻāϞā§āĻĒ āĻšāϞ āĻāĻāĻāϏ āĻā§āϏā§āĻ āĻĢā§āύ āύāĻŽā§āĻŦāϰ āĻšāĻŋāϏāĻžāĻŦā§ 555 āĻĒā§āϰāĻŋāĻĢāĻŋāĻā§āϏāĻĄ āύāĻŽā§āĻŦāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž, āĻāĻĻāĻžāĻšāϰāĻŖāϏā§āĻŦāϰā§āĻĒ: +1 650-555-3434
- āĻĻā§āϰā§āĻā§āϝ āĻāĻŦāĻ āĻ āύā§āϝāĻžāύā§āϝ āϏā§āĻŽāĻžāĻŦāĻĻā§āϧāϤāĻžāϰ āĻāύā§āϝ āĻĢā§āύ āύāĻŽā§āĻŦāϰ āϏāĻ āĻŋāĻāĻāĻžāĻŦā§ āĻĢāϰāĻŽā§āϝāĻžāĻ āĻāϰāϤ⧠āĻšāĻŦā§āĨ¤ āϤāĻžāϰāĻž āĻāĻāύāĻ āĻĒā§āϰāĻā§āϤ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻĢā§āύ āύāĻŽā§āĻŦāϰā§āϰ āĻŽāϤ⧠āĻāĻāĻ āĻŦā§āϧāϤāĻžāϰ āĻŽāϧā§āϝ āĻĻāĻŋāϝāĻŧā§ āϝāĻžāĻŦā§āĨ¤
- āĻāĻĒāύāĻŋ āĻŦāĻŋāĻāĻžāĻļā§āϰ āĻāύā§āϝ 10āĻāĻŋ āĻĒāϰā§āϝāύā§āϤ āĻĢā§āύ āύāĻŽā§āĻŦāϰ āϝā§āĻ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ⧎
- āĻĒāϰā§āĻā§āώāĻžāĻŽā§āϞāĻ āĻĢā§āύ āύāĻŽā§āĻŦāϰ/āĻā§āĻĄāĻā§āϞāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύ āϝāĻž āĻ āύā§āĻŽāĻžāύ āĻāϰāĻž āĻāĻ āĻŋāύ āĻāĻŦāĻ āĻāύ āĻāύ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰā§āύāĨ¤
āĻāĻžāϞā§āĻĒāύāĻŋāĻ āĻĢā§āύ āύāĻŽā§āĻŦāϰ āĻāĻŦāĻ āϝāĻžāĻāĻžāĻāĻāϰāĻŖ āĻā§āĻĄ āϤā§āϰāĻŋ āĻāϰā§āύ
- Firebase āĻāύāϏā§āϞ⧠, āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āĻŦāĻŋāĻāĻžāĻāĻāĻŋ āĻā§āϞā§āύāĨ¤
- āϏāĻžāĻāύ āĻāύ āĻĒāĻĻā§āϧāϤāĻŋ āĻā§āϝāĻžāĻŦā§, āĻĢā§āύ āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰ⧠āϏāĻā§āώāĻŽ āĻāϰā§āύ āϝāĻĻāĻŋ āĻāĻĒāύāĻŋ āĻāϤāĻŋāĻŽāϧā§āϝ⧠āύāĻž āĻāϰ⧠āĻĨāĻžāĻā§āύāĨ¤
- āĻ ā§āϝāĻžāĻāϰā§āĻĄāĻŋāϝāĻŧāύ āĻŽā§āύ⧠āĻĒāϰā§āĻā§āώāĻžāϰ āĻāύā§āϝ āĻĢā§āύ āύāĻŽā§āĻŦāϰ āĻā§āϞā§āύāĨ¤
- āĻāĻĒāύāĻŋ āϝ⧠āĻĢā§āύ āύāĻŽā§āĻŦāϰāĻāĻŋ āĻĒāϰā§āĻā§āώāĻž āĻāϰāϤ⧠āĻāĻžāύ āϤāĻž āĻĒā§āϰāĻĻāĻžāύ āĻāϰā§āύ, āĻāĻĻāĻžāĻšāϰāĻŖāϏā§āĻŦāϰā§āĻĒ: +1 650-555-3434 āĨ¤
- āϏā§āĻ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āύāĻŽā§āĻŦāϰā§āϰ āĻāύā§āϝ 6-āϏāĻāĻā§āϝāĻžāϰ āϝāĻžāĻāĻžāĻāĻāϰāĻŖ āĻā§āĻĄ āĻĒā§āϰāĻĻāĻžāύ āĻāϰā§āύ, āĻāĻĻāĻžāĻšāϰāĻŖāϏā§āĻŦāϰā§āĻĒ: 654321 āĨ¤
- āύāĻŽā§āĻŦāϰ āϝā§āĻ āĻāϰā§āύ āĨ¤ āϝāĻĻāĻŋ āĻĒā§āϰāϝāĻŧā§āĻāύ āĻšāϝāĻŧ, āĻāĻĒāύāĻŋ āĻĢā§āύ āύāĻŽā§āĻŦāϰ āĻāĻŦāĻ āĻāϰ āĻā§āĻĄāĻāĻŋ āĻŽā§āĻā§ āĻĢā§āϞāϤ⧠āĻĒāĻžāϰā§āύ āϏāĻāĻļā§āϞāĻŋāώā§āĻ āϏāĻžāϰāĻŋāϰ āĻāĻĒāϰ āĻšā§āĻāĻžāϰ āĻāϰ⧠āĻāĻŦāĻ āĻā§āϰā§āϝāĻžāĻļ āĻāĻāĻāύ⧠āĻā§āϞāĻŋāĻ āĻāϰā§āĨ¤
āĻŽā§āϝāĻžāύā§āϝāĻŧāĻžāϞ āĻā§āϏā§āĻāĻŋāĻ
āĻāĻĒāύāĻŋ āϏāϰāĻžāϏāϰāĻŋ āĻāĻĒāύāĻžāϰ āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ⧠āĻāĻāĻāĻŋ āĻāĻžāϞā§āĻĒāύāĻŋāĻ āĻĢā§āύ āύāĻŽā§āĻŦāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻļā§āϰ⧠āĻāϰāϤ⧠āĻĒāĻžāϰā§āύāĨ¤ āĻāĻāĻŋ āĻāĻĒāύāĻžāĻā§ āĻā§āĻāĻž āϏāĻāĻā§āϰāĻžāύā§āϤ āϏāĻŽāϏā§āϝāĻž āĻŦāĻž āĻĨā§āϰāĻāϞāĻŋāĻ āĻāĻžāĻĄāĻŧāĻžāĻ āĻŦāĻŋāĻāĻžāĻļā§āϰ āĻĒāϰā§āϝāĻžāϝāĻŧā§ āĻŽā§āϝāĻžāύā§āϝāĻŧāĻžāϞ āĻā§āϏā§āĻāĻŋāĻ āĻāϰāϤ⧠āĻĻā§āϝāĻŧāĨ¤ āĻāĻĒāύāĻŋ Google Play āĻĒāϰāĻŋāώā§āĻŦāĻž āĻāύāϏā§āĻāϞ āύāĻž āĻāϰ⧠āϏāϰāĻžāϏāϰāĻŋ iOS āϏāĻŋāĻŽā§āϞā§āĻāϰ āĻŦāĻž Android āĻāĻŽā§āϞā§āĻāϰ āĻĨā§āĻā§ āĻĒāϰā§āĻā§āώāĻž āĻāϰāϤ⧠āĻĒāĻžāϰā§āύāĨ¤
āĻāĻĒāύāĻŋ āϝāĻāύ āĻāĻžāϞā§āĻĒāύāĻŋāĻ āĻĢā§āύ āύāĻŽā§āĻŦāϰ āĻĒā§āϰāĻĻāĻžāύ āĻāϰā§āύ āĻāĻŦāĻ āϝāĻžāĻāĻžāĻāĻāϰāĻŖ āĻā§āĻĄ āĻĒāĻžāĻ āĻžāύ, āϤāĻāύ āĻā§āύ⧠āĻĒā§āϰāĻā§āϤ SMS āĻĒāĻžāĻ āĻžāύ⧠āĻšāϝāĻŧ āύāĻžāĨ¤ āĻĒāϰāĻŋāĻŦāϰā§āϤā§, āϏāĻžāĻāύ āĻāύ āϏāĻŽā§āĻĒā§āϰā§āĻŖ āĻāϰāϤ⧠āĻāĻĒāύāĻžāĻā§ āĻĒā§āϰā§āĻŦā§ āĻāύāĻĢāĻŋāĻāĻžāϰ āĻāϰāĻž āϝāĻžāĻāĻžāĻāĻāϰāĻŖ āĻā§āĻĄ āĻĒā§āϰāĻĻāĻžāύ āĻāϰāϤ⧠āĻšāĻŦā§āĨ¤
āϏāĻžāĻāύ-āĻāύ āϏāĻŽā§āĻĒā§āϰā§āĻŖ āĻšāϞā§, āϏā§āĻ āĻĢā§āύ āύāĻŽā§āĻŦāϰ āĻĻāĻŋāϝāĻŧā§ āĻāĻāĻāύ Firebase āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āϤā§āϰāĻŋ āĻāϰāĻž āĻšāϝāĻŧāĨ¤ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻāĻāĻāĻŋ āĻŦāĻžāϏā§āϤāĻŦ āĻĢā§āύ āύāĻŽā§āĻŦāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻŽāϤ⧠āĻāĻāĻ āĻāĻāϰāĻŖ āĻāĻŦāĻ āĻŦā§āĻļāĻŋāώā§āĻā§āϝ āϰāϝāĻŧā§āĻā§ āĻāĻŦāĻ āĻāĻāĻāĻāĻžāĻŦā§ Realtime Database / Cloud Firestore āĻāĻŦāĻ āĻ āύā§āϝāĻžāύā§āϝ āĻĒāϰāĻŋāώā§āĻŦāĻžāĻā§āϞāĻŋ āĻ ā§āϝāĻžāĻā§āϏā§āϏ āĻāϰāϤ⧠āĻĒāĻžāϰā§ā§ˇ āĻāĻ āĻĒā§āϰāĻā§āϰāĻŋāϝāĻŧāĻžāϰ āϏāĻŽāϝāĻŧ āϝ⧠āĻāĻāĻĄāĻŋ āĻā§āĻā§āύāĻāĻŋ āĻŽāĻŋāύā§āĻ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§ āϤāĻžāϤ⧠āĻāĻāĻāύ āĻĒā§āϰāĻā§āϤ āĻĢā§āύ āύāĻŽā§āĻŦāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻŽāϤā§āĻ āϏā§āĻŦāĻžāĻā§āώāϰ āϰāϝāĻŧā§āĻā§āĨ¤
āĻāϰā§āĻāĻāĻŋ āĻŦāĻŋāĻāϞā§āĻĒ āĻšāϞ āĻāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻĻā§āϰ āĻāĻĒāϰ āĻāĻžāϏā§āĻāĻŽ āĻĻāĻžāĻŦāĻŋāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻāĻāĻāĻŋ āĻĒāϰā§āĻā§āώāĻžāϰ āĻā§āĻŽāĻŋāĻāĻž āϏā§āĻ āĻāϰāĻž āϝāĻžāϤ⧠āĻāĻĒāύāĻŋ āϤāĻžāĻĻā§āϰ āĻ ā§āϝāĻžāĻā§āϏā§āϏāĻā§ āĻāϰāĻ āϏā§āĻŽāĻŋāϤ āĻāϰāϤ⧠āĻāĻžāύ āϤāĻžāĻšāϞ⧠āϤāĻžāĻĻā§āϰ āĻāĻžāϞ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āĻšāĻŋāϏāĻžāĻŦā§ āĻāϞāĻžāĻĻāĻž āĻāϰāϤ⧠āĻĒāĻžāϰā§āύāĨ¤
āĻāύā§āĻāĻŋāĻā§āϰā§āĻļāύ āĻā§āϏā§āĻāĻŋāĻ
āĻŽā§āϝāĻžāύā§āϝāĻŧāĻžāϞ āĻā§āϏā§āĻāĻŋāĻ āĻāĻžāĻĄāĻŧāĻžāĻ, Firebase Authentication āĻĢā§āύ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖ āĻĒāϰā§āĻā§āώāĻžāϰ āĻāύā§āϝ āĻāύā§āĻāĻŋāĻā§āϰā§āĻļāύ āĻĒāϰā§āĻā§āώāĻž āϞāĻŋāĻāϤ⧠āϏāĻšāĻžāϝāĻŧāϤāĻž āĻāϰāĻžāϰ āĻāύā§āϝ API āĻĒā§āϰāĻĻāĻžāύ āĻāϰā§āĨ¤ āĻāĻ APIāĻā§āϞāĻŋ āĻāϝāĻŧā§āĻŦā§ reCAPTCHA āĻĒā§āϰāϝāĻŧā§āĻāύā§āϝāĻŧāϤāĻž āĻāĻŦāĻ iOS-āĻ āύā§āϰāĻŦ āĻĒā§āĻļ āĻŦāĻŋāĻā§āĻāĻĒā§āϤāĻŋāĻā§āϞāĻŋ āĻ āĻā§āώāĻŽ āĻāϰ⧠āĻ ā§āϝāĻžāĻĒ āϝāĻžāĻāĻžāĻāĻāϰāĻŖ āĻ āĻā§āώāĻŽ āĻāϰā§ā§ˇ āĻāĻāĻŋ āĻāĻ āĻĒā§āϰāĻŦāĻžāĻšā§ āĻ āĻā§āĻŽā§āĻļāύ āĻĒāϰā§āĻā§āώāĻžāĻā§ āϏāĻŽā§āĻāĻŦ āĻāϰ⧠āϤā§āϞ⧠āĻāĻŦāĻ āĻŦāĻžāϏā§āϤāĻŦāĻžāϝāĻŧāύ āĻāϰāĻž āϏāĻšāĻ āĻāϰ⧠āϤā§āϞā§āĨ¤ āĻāĻĒāϰāύā§āϤā§, āϤāĻžāϰāĻž Android āĻ āϤāĻžā§āĻā§āώāĻŖāĻŋāĻ āϝāĻžāĻāĻžāĻāĻāϰāĻŖ āĻĒā§āϰāĻŦāĻžāĻš āĻĒāϰā§āĻā§āώāĻž āĻāϰāĻžāϰ āĻā§āώāĻŽāϤāĻž āĻĒā§āϰāĻĻāĻžāύ āĻāϰāϤ⧠āϏāĻžāĻšāĻžāϝā§āϝ āĻāϰā§āĨ¤
āĻāϝāĻŧā§āĻŦā§, firebase.auth.RecaptchaVerifier
āϰā§āύā§āĻĄāĻžāϰ āĻāϰāĻžāϰ āĻāĻā§ appVerificationDisabledForTesting
true
āϏā§āĻ āĻāϰā§āύāĨ¤ āĻāĻāĻŋ āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧāĻāĻžāĻŦā§ reCAPTCHA āϏāĻŽāĻžāϧāĻžāύ āĻāϰā§, āĻāĻĒāύāĻžāĻā§ āĻĢā§āύ āύāĻŽā§āĻŦāϰāĻāĻŋ āĻŽā§āϝāĻžāύā§āϝāĻŧāĻžāϞāĻŋ āϏāĻŽāĻžāϧāĻžāύ āύāĻž āĻāϰ⧠āĻĒāĻžāϏ āĻāϰāĻžāϰ āĻ
āύā§āĻŽāϤāĻŋ āĻĻā§āϝāĻŧ⧎ āĻŽāύ⧠āϰāĻžāĻāĻŦā§āύ āϝ⧠āϝāĻĻāĻŋāĻ reCAPTCHA āĻ
āĻā§āώāĻŽ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§, āĻāĻāĻāĻŋ āĻ
-āĻāĻžāϞā§āĻĒāύāĻŋāĻ āĻĢā§āύ āύāĻŽā§āĻŦāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻāĻāύāĻ āϏāĻžāĻāύ āĻāύ āϏāĻŽā§āĻĒā§āϰā§āĻŖ āĻāϰāϤ⧠āĻŦā§āϝāϰā§āĻĨ āĻšāĻŦā§āĨ¤ āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āĻāĻžāϞā§āĻĒāύāĻŋāĻ āĻĢā§āύ āύāĻŽā§āĻŦāϰ āĻāĻ API āĻāϰ āϏāĻžāĻĨā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āϝā§āϤ⧠āĻĒāĻžāϰā§āĨ¤
// Turn off phone auth app verification. firebase.auth().settings.appVerificationDisabledForTesting = true; var phoneNumber = "+16505554567"; var testVerificationCode = "123456"; // This will render a fake reCAPTCHA as appVerificationDisabledForTesting is true. // This will resolve after rendering without app verification. var appVerifier = new firebase.auth.RecaptchaVerifier('recaptcha-container'); // signInWithPhoneNumber will call appVerifier.verify() which will resolve with a fake // reCAPTCHA response. firebase.auth().signInWithPhoneNumber(phoneNumber, appVerifier) .then(function (confirmationResult) { // confirmationResult can resolve with the fictional testVerificationCode above. return confirmationResult.confirm(testVerificationCode) }).catch(function (error) { // Error; SMS not sent // ... });
āĻĻā§āĻļā§āϝāĻŽāĻžāύ āĻāĻŦāĻ āĻ āĻĻā§āĻļā§āϝ āĻŽāĻ reCAPTCHA āĻ ā§āϝāĻžāĻĒ āϝāĻžāĻāĻžāĻāĻāĻžāϰā§āϰāĻž āĻāĻŋāύā§āύāĻāĻžāĻŦā§ āĻāĻāϰāĻŖ āĻāϰ⧠āϝāĻāύ āĻ ā§āϝāĻžāĻĒ āϝāĻžāĻāĻžāĻāĻāϰāĻŖ āĻ āĻā§āώāĻŽ āĻĨāĻžāĻā§:
- āĻĻā§āĻļā§āϝāĻŽāĻžāύ reCAPTCHA : āϝāĻāύ āĻĻā§āĻļā§āϝāĻŽāĻžāύ reCAPTCHA
appVerifier.render()
āĻāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āϰā§āύā§āĻĄāĻžāϰ āĻāϰāĻž āĻšāϝāĻŧ, āϤāĻāύ āĻāĻāĻŋ āĻāĻāĻāĻŋ āϏā§āĻā§āύā§āĻĄ āĻŦāĻŋāϞāĻŽā§āĻŦā§āϰ āĻāĻāĻāĻŋ āĻāĻā§āύāĻžāĻāĻļā§āϰ āĻĒāϰ⧠āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧāĻāĻžāĻŦā§ āϏāĻŽāĻžāϧāĻžāύ āĻāϰā§āĨ¤ āĻāĻāĻŋ āϰā§āύā§āĻĄāĻžāϰāĻŋāĻāϝāĻŧā§āϰ āϏāĻžāĻĨā§ āϏāĻžāĻĨā§āĻ reCAPTCHA-āĻ āĻā§āϞāĻŋāĻ āĻāϰāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āϏāĻŽāϤā§āϞā§āϝāĨ¤ reCAPTCHA āĻĒā§āϰāϤāĻŋāĻā§āϰāĻŋāϝāĻŧāĻž āĻāĻŋāĻā§ āϏāĻŽāϝāĻŧā§āϰ āĻĒāϰ⧠āĻŽā§āϝāĻŧāĻžāĻĻ āĻļā§āώ āĻšāϝāĻŧā§ āϝāĻžāĻŦā§ āĻāĻŦāĻ āϤāĻžāϰāĻĒāϰ āĻāĻŦāĻžāϰ āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧāĻāĻžāĻŦā§ āϏāĻŽāĻžāϧāĻžāύ āĻšāĻŦā§āĨ¤ - āĻ
āĻĻā§āĻļā§āϝ reCAPTCHA : āĻ
āĻĻā§āĻļā§āϝ reCAPTCHA āϰā§āύā§āĻĄāĻžāϰāĻŋāĻ-āĻ āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧāĻāĻžāĻŦā§ āϏāĻŽāĻžāϧāĻžāύ āĻāϰ⧠āύāĻž āĻāĻŦāĻ āĻĒāϰāĻŋāĻŦāϰā§āϤā§
appVerifier.verify()
āĻāϞ⧠āĻŦāĻž āϝāĻāύ reCAPTCHA-āĻāϰ āĻŦā§āϤāĻžāĻŽ āĻ ā§āϝāĻžāĻā§āĻāϰāĻāĻŋ āϏā§āĻā§āύā§āĻĄ āĻŦāĻŋāϞāĻŽā§āĻŦā§āϰ āĻāĻāĻāĻŋ āĻāĻā§āύāĻžāĻāĻļā§āϰ āĻĒāϰ⧠āĻā§āϞāĻŋāĻ āĻāϰāĻž āĻšāϝāĻŧ āϤāĻāύ āϤāĻž āĻāϰā§āĨ¤ āĻāĻāĻāĻāĻžāĻŦā§, āĻāĻŋāĻā§ āϏāĻŽāϝāĻŧā§āϰ āĻĒāϰ⧠āĻĒā§āϰāϤāĻŋāĻā§āϰāĻŋāϝāĻŧāĻžāϰ āĻŽā§āϝāĻŧāĻžāĻĻ āĻļā§āώ āĻšāϝāĻŧā§ āϝāĻžāĻŦā§ āĻāĻŦāĻ āĻļā§āϧā§āĻŽāĻžāϤā§āϰappVerifier.verify()
āĻāϞā§āϰ āĻĒāϰ⧠āĻ āĻĨāĻŦāĻž reCAPTCHA-āĻāϰ āĻŦā§āϤāĻžāĻŽ āĻ ā§āϝāĻžāĻā§āĻāϰ⧠āĻāĻŦāĻžāϰ āĻā§āϞāĻŋāĻ āĻāϰāĻžāϰ āĻĒāϰā§āĻ āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧāĻāĻžāĻŦā§ āϏāĻŽāĻžāϧāĻžāύ āĻšāĻŦā§āĨ¤
āϝāĻāύāĻ āĻāĻāĻāĻŋ āĻŽāĻ reCAPTCHA āϏāĻŽāĻžāϧāĻžāύ āĻāϰāĻž āĻšāϝāĻŧ, āϏāĻāĻļā§āϞāĻŋāώā§āĻ āĻāϞāĻŦā§āϝāĻžāĻ āĻĢāĻžāĻāĻļāύāĻāĻŋ āĻāĻžāϞ āĻĒā§āϰāϤāĻŋāĻā§āϰāĻŋāϝāĻŧāĻžāϰ āϏāĻžāĻĨā§ āĻĒā§āϰāϤā§āϝāĻžāĻļāĻŋāϤāĻāĻžāĻŦā§ āĻā§āϰāĻŋāĻāĻžāϰ āĻšāϝāĻŧ⧎ āϝāĻĻāĻŋ āĻāĻāĻāĻŋ āĻŽā§āϝāĻŧāĻžāĻĻ āĻļā§āώ āĻšāĻāϝāĻŧāĻžāϰ āĻāϞāĻŦā§āϝāĻžāĻāĻ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāϰāĻž āĻĨāĻžāĻā§ āϤāĻŦā§ āĻāĻāĻŋ āĻŽā§āϝāĻŧāĻžāĻĻ āĻļā§āώ āĻšāĻāϝāĻŧāĻžāϰ āϏāĻŽāϝāĻŧ āĻā§āϰāĻŋāĻāĻžāϰ āĻāϰāĻŦā§āĨ¤
āĻĒāϰāĻŦāϰā§āϤ⧠āĻĒāĻĻāĻā§āώā§āĻĒ
āĻāĻāĻāύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āĻĒā§āϰāĻĨāĻŽāĻŦāĻžāϰ āϏāĻžāĻāύ āĻāύ āĻāϰāĻžāϰ āĻĒāϰā§, āĻāĻāĻāĻŋ āύāϤā§āύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻ ā§āϝāĻžāĻāĻžāĻāύā§āĻ āϤā§āϰāĻŋ āĻāϰāĻž āĻšāϝāĻŧ āĻāĻŦāĻ āĻļāĻāϏāĻžāĻĒāϤā§āϰāĻā§āϞāĻŋāϰ āϏāĻžāĻĨā§ āϞāĻŋāĻā§āĻ āĻāϰāĻž āĻšāϝāĻŧâāĻ āϰā§āĻĨāĻžā§, āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āύāĻžāĻŽ āĻāĻŦāĻ āĻĒāĻžāϏāĻāϝāĻŧāĻžāϰā§āĻĄ, āĻĢā§āύ āύāĻŽā§āĻŦāϰ, āĻŦāĻž āĻĒā§āϰāĻŽāĻžāĻŖ āĻĒā§āϰāĻĻāĻžāύāĻāĻžāϰā§āϰ āϤāĻĨā§āϝ â āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āϏāĻžāĻāύ āĻāύ āĻāϰā§āĻā§āύāĨ¤ āĻāĻ āύāϤā§āύ āĻ ā§āϝāĻžāĻāĻžāĻāύā§āĻāĻāĻŋ āĻāĻĒāύāĻžāϰ āĻĢāĻžāϝāĻŧāĻžāϰāĻŦā§āϏ āĻĒā§āϰāĻāϞā§āĻĒā§āϰ āĻ āĻāĻļ āĻšāĻŋāϏāĻžāĻŦā§ āϏāĻāϰāĻā§āώāĻŖ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§ āĻāĻŦāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āĻā§āĻāĻžāĻŦā§ āϏāĻžāĻāύ āĻāύ āĻāϰā§āύ āύāĻž āĻā§āύ, āĻāĻĒāύāĻžāϰ āĻĒā§āϰāĻāϞā§āĻĒā§āϰ āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻ ā§āϝāĻžāĻĒ āĻā§āĻĄāĻŧā§ āĻāĻāĻāύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻā§ āĻļāύāĻžāĻā§āϤ āĻāϰāϤ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āϝā§āϤ⧠āĻĒāĻžāϰā§āĨ¤
āĻāĻĒāύāĻžāϰ āĻ ā§āϝāĻžāĻĒā§, āĻāĻĒāύāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻĒā§āϰāĻŽāĻžāĻŖā§āĻāϰāĻŖā§āϰ āϏā§āĻĨāĻŋāϤāĻŋ āĻāĻžāύāĻžāϰ āĻĒā§āϰāϏā§āϤāĻžāĻŦāĻŋāϤ āĻāĻĒāĻžāϝāĻŧ āĻšāϞ
Auth
āĻ āĻŦāĻā§āĻā§āĻā§ āĻāĻāĻāύ āĻĒāϰā§āϝāĻŦā§āĻā§āώāĻ āϏā§āĻ āĻāϰāĻžāĨ¤ āϤāĻžāϰāĻĒāϰ āĻāĻĒāύāĻŋUser
āĻ āĻŦāĻā§āĻā§āĻ āĻĨā§āĻā§ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻŽā§āϞāĻŋāĻ āĻĒā§āϰā§āĻĢāĻžāĻāϞ āϤāĻĨā§āϝ āĻĒā§āϤ⧠āĻĒāĻžāϰā§āύāĨ¤ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻĻā§āϰ āĻĒāϰāĻŋāĻāĻžāϞāύāĻž āĻĻā§āĻā§āύāĨ¤āĻāĻĒāύāĻžāϰ Firebase Realtime Database āĻāĻŦāĻ Cloud Storage āϏā§āϰāĻā§āώāĻž āύāĻŋāϝāĻŧāĻŽā§ , āĻāĻĒāύāĻŋ
auth
āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞ āĻĨā§āĻā§ āϏāĻžāĻāύ-āĻāύ āĻāϰāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻ āύāύā§āϝ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āĻāĻāĻĄāĻŋ āĻĒā§āϤ⧠āĻĒāĻžāϰā§āύ āĻāĻŦāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰ⧠āĻā§āύ āĻĄā§āĻāĻž āĻ ā§āϝāĻžāĻā§āϏā§āϏ āĻāϰāϤ⧠āĻĒāĻžāϰ⧠āϤāĻž āύāĻŋāϝāĻŧāύā§āϤā§āϰāĻŖ āĻāϰāϤ⧠āĻāĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύāĨ¤
āĻāĻāĻāύ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āĻā§ āϏāĻžāĻāύ āĻāĻāĻ āĻāϰāϤā§, signOut
āĻāϞ āĻāϰā§āύ:
Web
import { getAuth, signOut } from "firebase/auth"; const auth = getAuth(); signOut(auth).then(() => { // Sign-out successful. }).catch((error) => { // An error happened. });
Web
firebase.auth().signOut().then(() => { // Sign-out successful. }).catch((error) => { // An error happened. });