我阅读了以下两个问题,但这些都不是我的问题的解决方案:
这两个问题中提到的解决方案均表明,我需要从Play控制台复制SHA-1,并将其放置在适用于我的应用程序的Firebase控制台SHA-1中。问题是My app is not on play store, I just signed it and build the apks
,就像我们通常对apk.relase所做的那样。而且我还将firebase_auth
和firebase_core
的依赖关系更新到最新版本。
下面是我的电话验证代码:
verificationCompleted() {
return (AuthCredential credential) async {
await _auth.signInWithCredential(credential).then((AuthResult value) {
if (value.user != null) {
Navigator.pop(context);
Navigator.push(
context,
new MaterialPageRoute(
builder: (context) => AddContacts(
user: value.user,
)));
}
});
};
}
verificationFailed() {
return (AuthException exception) {
Toast.show('Verification Failed: ${exception.code}', context,
backgroundColor: Colors.red,
duration: 3,
backgroundRadius: 5,
gravity: Toast.BOTTOM);
};
}
codeSent() {
return (String verificationID, [int forceResendingToken]) {
showDialog(
context: context,
barrierDismissible: false,
builder: (context) {
return AlertDialog(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(12)),
title: Text('Enter 6-Digit Code'),
content: Column(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
TextField(
style: TextStyle(
fontSize: MediaQuery.of(context).size.height * 0.025),
controller: _controllerCode,
keyboardType: TextInputType.number,
maxLength: 6,
cursorColor: Colors.black,
decoration: InputDecoration(
errorText: validateCode(_controllerCode.text),
hintText: 'Enter Code',
enabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(12.0)),
focusedBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(12.0)),
errorBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(12.0),
borderSide: BorderSide(color: Colors.red)),
focusedErrorBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(12.0),
borderSide: BorderSide(color: Colors.red)),
),
),
SizedBox(
height: MediaQuery.of(context).size.height * 0.01,
),
Row(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
Icon(
Icons.info,
color: Colors.red,
size: MediaQuery.of(context).size.height * 0.03,
),
SizedBox(
width: MediaQuery.of(context).size.width * 0.02,
),
Text(
'Wait for Automatic Detection!',
style: TextStyle(
fontFamily: 'Sogoe',
color: Colors.red,
fontSize:
MediaQuery.of(context).size.height * 0.017),
),
],
),
SizedBox(
height: MediaQuery.of(context).size.height * 0.01,
),
Container(
height: MediaQuery.of(context).size.height * 0.06,
width: MediaQuery.of(context).size.width,
child: FlatButton(
padding: EdgeInsets.symmetric(
horizontal: MediaQuery.of(context).size.width * .05),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(5)),
child: Text(
"Confirm",
),
textColor: Colors.white,
color: Colors.lightBlue,
onPressed: () async {
setState(() {
_controllerCode.text.isEmpty
? codeValidate = true
: codeValidate = false;
});
_auth.currentUser().then((user) {
if (user != null) {
Navigator.pop(context);
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => AddContacts(
user: user,
)));
} else {
_verifyCode();
}
});
_controllerCode.clear();
},
),
)
],
),
);
});
_verificationId = verificationID;
};
}
codeAutoRetrievalTimeout() {
return (String verificationID) {
_verificationId = verificationID;
};
}
Future<void> _verifyPhoneNumber(String phone) async {
_auth.verifyPhoneNumber(
phoneNumber: phone,
timeout: const Duration(seconds: 60),
verificationCompleted: verificationCompleted(),
verificationFailed: verificationFailed(),
codeSent: codeSent(),
codeAutoRetrievalTimeout: codeAutoRetrievalTimeout(),
);
}
Future<void> _verifyCode() async {
final AuthCredential credential = PhoneAuthProvider.getCredential(
verificationId: _verificationId, smsCode: _controllerCode.text);
final FirebaseUser user =
(await _auth.signInWithCredential(credential)).user;
final FirebaseUser currentUser = await _auth.currentUser();
assert(user.uid == currentUser.uid);
if (user != null) {
Navigator.pop(context);
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => AddContacts(
user: user,
)));
}
}
答案 0 :(得分:2)
找到了解决方案
是的,我添加了SHA-1密钥,但是我知道用于调试和发布模式的SHA-1是分开的,并且此answer is solution
答案 1 :(得分:2)
将您的 PLAYSTORE 签名密钥证书添加到 FIREBASE SHA1 和 SHA256 证书。
您会在
googele play console > 发布中 - 设置 > 应用完整性 > 应用签名密钥证书