in javascript/widgets/handler/phonesigninstart.js [299:366]
function(error) {
// Error occurred.
component.dismissDialog();
if (error['name'] && error['name'] == 'cancel') {
return;
}
// Anytime an error is thrown by the backend, reset the response.
// This is needed since a reCAPTCHA token can only be redeemed once.
// One common scenario is the following:
// 1. user enters an invalid phone number.
// 2. user solves reCAPTCHA.
// 3. Form submitted.
// 4. Error thrown by backend due to invalid phone number.
// 5. User updates the phone number field with the correct number.
// 6. As reCAPTCHA response unexpired, user will submit again and get
// a reCAPTCHA check error since the same reCAPTCHA response is sent
// again.
// The solution is to reset immediately after the backend throws an
// error.
grecaptcha.reset(firebaseui.auth.widget.handler.recaptchaWidgetId_);
// Reset reCAPTCHA token.
firebaseui.auth.widget.handler.recaptchaToken_ = null;
var errorMessage =
/** @type {string} */ ((error && error['message']) || '');
if (error['code']) {
// Firebase auth error.
switch (error['code']) {
case 'auth/too-many-requests':
errorMessage =
firebaseui.auth.soy2.strings.errorTooManyRequestsPhoneNumber()
.toString();
break;
// Invalid phone number.
case 'auth/invalid-phone-number':
// Missing phone number (should never happen).
case 'auth/missing-phone-number':
// Invalid phone number provided. Show the error message inline.
component.getPhoneNumberElement().focus();
firebaseui.auth.ui.element.show(
component.getPhoneNumberErrorElement(),
firebaseui.auth.soy2.strings.errorInvalidPhoneNumber()
.toString());
return;
case 'auth/admin-restricted-operation':
if (app.getConfig().isAdminRestrictedOperationConfigured()) {
const container = component.getContainer();
component.dispose();
firebaseui.auth.widget.handler.handle(
firebaseui.auth.widget.HandlerName.UNAUTHORIZED_USER,
app,
container,
phoneNumberValue.getPhoneNumber(),
firebase.auth.PhoneAuthProvider.PROVIDER_ID);
return;
} else {
errorMessage =
firebaseui.auth.widget.handler.common.getErrorMessage(
error);
}
break;
default:
errorMessage =
firebaseui.auth.widget.handler.common.getErrorMessage(error);
}
}
// Show error message in the info bar.
component.showInfoBar(errorMessage);
}));