Это функция, которую я использую для создания OTP и отправки OTP. OTP пришел один раз, но после этого OTP не приходит. Я даже пробовал 2 разных кода страны и номера.
class AuthService with ChangeNotifier {
final FirebaseAuth _auth = FirebaseAuth.instance;
//Sign In
String userphone = "";
String verificationId;
String errorMessage = "";
Future verifyPhone(String phonenumber) async {
final PhoneVerificationFailed verificationFailed =
(FirebaseAuthException authException) {
print("Auth Exception is ${authException.message}");
};
final PhoneCodeSent codeSent =
(String verificationId, [int forceResendingToken]) async {
print("verification id is $verificationId");
this.verificationId = verificationId;
};
final PhoneCodeAutoRetrievalTimeout codeAutoRetrievalTimeout =
(String verificationId) {
this.verificationId = verificationId;
};
await _auth.verifyPhoneNumber(
phoneNumber: "+7" + phonenumber,
verificationCompleted: null,
verificationFailed: verificationFailed,
codeSent: codeSent,
codeAutoRetrievalTimeout: codeAutoRetrievalTimeout,
timeout: const Duration(seconds: 60),
);
}
Future signIn({@required String smsCode, context}) async {
AuthCredential authCredential = PhoneAuthProvider.credential(
verificationId: verificationId,
smsCode: smsCode,
);
UserCredential result = await _auth.signInWithCredential(authCredential);
User user = result.user;
await checkUser(result);
return _userFromFirebase(user);
}
}
}
Пользовательская кнопка, которую я использую для запуска генерации otp. Я пробовал на эмуляторе, а также на моем реальном устройстве.
CustomButton(
buttonName: "Generate OTP",
function: () async {
if (_formKeySignIn.currentState.validate() &&
phonenumber.length == 10) {
Provider.of<AuthService>(context, listen: false).userphone =
phonenumber;
Provider.of<AuthService>(context, listen: false)
.verifyPhone(phonenumber);
widget.changeView();
} else {
setState(() {
error = "Please enter a valid phone number";
});
}
},
),
извините, не помогает

Код правильный! Ошибка, которую я делал, заключалась в том, что я также должен добавить коды SHA из раздела подписи приложений из Play Publisher в Firebase вместе с кодом SHA ваших приложений. Затем снова загрузите json-файл служб Google, замените json-файл вашего приложения и снова создайте пакет приложений.
попробуйте этот stackoverflow.com/a/70003131/12767429