ARTICLE AD BOX
I'm trying to build a phone number OTP verification system using Firebase and Android Studio using Java.
I've set up the things in Firebase, the SHA-1 and SHA-256, and the phone sign-in method is Enabled.
The error message is:
This operation is not allowed. This may be due to the given sign-in provider being disabled of this Firebase project.
I've tried talking to AI but with no luck.
Here's the full code of the Java activity, note that the signIn() method is not finished yet:
package com.example.mechat; import android.annotation.SuppressLint; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.ProgressBar; import android.widget.TextView; import android.widget.Toast; import androidx.activity.EdgeToEdge; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import androidx.core.graphics.Insets; import androidx.core.view.ViewCompat; import androidx.core.view.WindowInsetsCompat; import com.google.firebase.FirebaseException; import com.google.firebase.auth.FirebaseAuth; import com.google.firebase.auth.PhoneAuthCredential; import com.google.firebase.auth.PhoneAuthOptions; import com.google.firebase.auth.PhoneAuthProvider; import com.google.firebase.firestore.FirebaseFirestore; import java.util.HashMap; import java.util.Map; import java.util.concurrent.TimeUnit; public class EnterVerificationCodeActivity extends AppCompatActivity { Button btnVerify; PhoneAuthProvider.ForceResendingToken myForceResendingToken; Long timeSeconds = 90L; EditText editTextVerificationCode; ProgressBar progressBar; String phoneNumber, myVerificationCode; TextView tvDescription, tvResendCode; FirebaseAuth fbAuth = FirebaseAuth.getInstance(); @SuppressLint("MissingInflatedId") @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); EdgeToEdge.enable(this); setContentView(R.layout.activity_enter_verification_code); ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> { Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()); v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom); return insets; }); btnVerify = findViewById(R.id.btnVerify); editTextVerificationCode = findViewById(R.id.editTextVerificationCode); progressBar = findViewById(R.id.progressBar); tvDescription = findViewById(R.id.tvDescription); tvResendCode = findViewById(R.id.tvResendCode); phoneNumber = getIntent().getExtras().getString("phoneNumberWithPlus"); tvDescription.setText("We have sent a verification code to " + phoneNumber); sendVerificationCode(phoneNumber,false); //the first time = no resend } void sendVerificationCode(String phoneNum, boolean isResend) { setInProgress(true); PhoneAuthOptions.Builder builder = PhoneAuthOptions.newBuilder(fbAuth); builder.setPhoneNumber(phoneNum); builder.setTimeout(timeSeconds, TimeUnit.SECONDS); builder.setActivity(this); builder.setCallbacks(new PhoneAuthProvider.OnVerificationStateChangedCallbacks() { @Override public void onVerificationCompleted(@NonNull PhoneAuthCredential phoneAuthCredential) { setInProgress(false); signIn(phoneAuthCredential); } @Override public void onVerificationFailed(@NonNull FirebaseException e) { String errorMessage = e.getMessage(); Toast.makeText(EnterVerificationCodeActivity.this, errorMessage, Toast.LENGTH_LONG).show(); setInProgress(false); } public void onCodeSent(@NonNull String verificationCode, @NonNull PhoneAuthProvider.ForceResendingToken forceResendingToken) { super.onCodeSent(verificationCode, forceResendingToken); myVerificationCode = verificationCode; myForceResendingToken = forceResendingToken; Toast.makeText(EnterVerificationCodeActivity.this, "Verification code sent to SMS", Toast.LENGTH_SHORT).show(); setInProgress(false); } }); if (!isResend) PhoneAuthProvider.verifyPhoneNumber(builder.build()); else PhoneAuthProvider.verifyPhoneNumber(builder.setForceResendingToken(myForceResendingToken).build()); } void setInProgress(boolean inProgress) { if (inProgress) { btnVerify.setVisibility(View.GONE); progressBar.setVisibility(View.VISIBLE); } else { progressBar.setVisibility(View.GONE); btnVerify.setVisibility(View.VISIBLE); } } void signIn(PhoneAuthCredential pAh) { } }