![](/img/trans.png)
[英]OTP in Firebase phone auth is not receiving when uploaded on playstore, but works fine when apk is installed on phone directly
[英]Error while geting Firebase Phone Auth OTP
我正在尝试实施 Firebase 电话验证。 我在 firebase 控制台上启用了电话验证。 我已生成密钥库并将 SHA 签名添加到控制台。
依赖项:
dependencies {
def multidex_version = "2.0.1"
implementation platform('com.google.firebase:firebase-bom:26.0.0')
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'com.google.firebase:firebase-analytics'
implementation "androidx.multidex:multidex:$multidex_version"
implementation 'com.google.firebase:firebase-auth'
implementation 'com.google.firebase:firebase-core'
implementation 'com.google.firebase:firebase-analytics'
implementation 'com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava'
}
phone_verification.dart
await FirebaseAuth.instance.verifyPhoneNumber(
phoneNumber: '+1234567890',
verificationCompleted: (PhoneAuthCredential credential) {
print('verificationCompleted');
},
verificationFailed: (FirebaseAuthException e) {
print('verificationFailed');
if (e.code == 'invalid-phone-number') {
print('The provided phone number is not valid.');
}
else {
print('Some error occoured: $e');
}
},
codeSent: (String verificationId, int resendToken) async {
print('codeSent');
// Update the UI - wait for the user to enter the SMS code
String smsCode = '123456';
// Create a PhoneAuthCredential with the code
PhoneAuthCredential phoneAuthCredential = PhoneAuthProvider.credential(verificationId: verificationId, smsCode: smsCode);
},
timeout: const Duration(seconds: 60),
codeAutoRetrievalTimeout: (String verificationId) {
print("Timeout: $verificationId");
},
);
执行上述块时,会收到以下错误。 控制台 Output:
E/FirebaseAuth: [GetAuthDomainTask] Error getting project config. Failed with {
"error": {
"code": 400,
"message": "INVALID_CERT_HASH",
"errors": [
{
"message": "INVALID_CERT_HASH",
"domain": "global",
"reason": "invalid"
}
]
}
}
400
V/FA: Recording user engagement, ms: 1165
E/zza: Failed to get reCAPTCHA token - calling backend without app verification
@CubeRootX 和 @user13864571
您的问题与 SHA1 和 SHA256 密钥有关。 您必须添加它们以验证您的证书。
去
您可以像这样从 gradle 获取密钥库。
./gradlew 签名报告
阅读更多信息: https : //firebase.google.com/docs/auth/android/phone-auth#enable-app-verification
在 Firebase 控制台中的身份验证下启用电话选项
错误 400 表示请求错误,可能是由于以下三个原因之一:-
在 firebase 控制台中打开您的项目 -> 转到项目设置 -> 单击添加指纹(在页面底部)-> 在那里添加 SHA-1 和 SHA-256 值。 图片供参考
您可以按如下方式获取 android studio 项目的 SHA 值:-
点击右上角的gradle->任务->android->signingReport->运行signingReort后获取底部的SHA值,供参考
如果问题未解决,请按照文档进行操作。
我被困在这里一个星期才发现我使用的密钥仅限于另一个应用程序,因此在我的应用程序中尝试使用它时失败。 所以我首先取消了Android设备验证中凭据选项卡中的限制,一切都恢复了正常
我们需要向@Anat Bharti 回答添加一个额外的步骤:在您的项目上启用 GCS 设备验证 API
在您的项目上启用 GCS 设备验证 API。 这解决了一切,你甚至没有要求在你的物理设备上验证验证码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.