# #firebase #flutter #firebase-authentication #google-authentication
Вопрос:
Я хочу, чтобы пользователи могли ввести свой собственный пароль и подтвердить пароль, нажав «Зарегистрироваться в Google». Кнопка просто примет адрес электронной почты их учетной записи Google в качестве адреса электронной почты, и пользователи должны будут ввести свои собственные пароли.
Экран регистрации —
SignInButton(
onPressed: () {
signInWithGoogle();
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => TasksScreen(),
),
);
},
btnText: 'Sign up with Google',
btnTextColor: Colors.blue,
buttonType: ButtonType.google,
buttonSize: ButtonSize.medium,
),
],
),
Подпишись с помощью Google —
Future<UserCredential> signInWithGoogle() async {
// Trigger the authentication flow
final GoogleSignInAccount googleUser = await GoogleSignIn().signIn();
// Obtain the auth details from the request
final GoogleSignInAuthentication googleAuth = await googleUser.authentication;
// Create a new credential
final credential = GoogleAuthProvider.credential(
accessToken: googleAuth.accessToken,
idToken: googleAuth.idToken,
);
// Once signed in, return the UserCredential
return await FirebaseAuth.instance.signInWithCredential(credential);
}
Комментарии:
1. Это тесто для прикрепления кода вместо изображений кода.
Ответ №1:
Если вы используете вход в систему с помощью Google, то вы не можете ввести пароль вручную. В этом и заключается идея входа в систему с помощью Thord party.
Если вы хотите сделать это вручную, используйте другой метод входа в firebase. например, войдите в систему с помощью электронной почты и пароля. Вы также можете проверить электронную почту, отправив ссылку для подтверждения при регистрации.
Firebase предоставляет вам только электронную почту и пароль (или другой процесс входа в систему), но не подтверждает пароль. Для подтверждения пароля вы должны управлять им самостоятельно.
Вы можете реализовать свою собственную логику, проверив пароль и подтвердив, что пароль совпадает или нет.
Если и то, и другое одинаково, то вам следует перейти к функции входа в firebase или регистрации, если нет, то отобразите сообщение об ошибке или проверку.
напр.
final TextEditingController _passwordController = TextEditingController();
final TextEditingController _confirmPasswordController = TextEditingController();
if (_passwordController.text == _confirmPasswordController.text) {
// your login or sign up function with firebase
} else {
// password is not matching with confirm password,
// show error message or validation
}
Комментарии:
1. Могу ли я позволить пользователям создавать свои собственные пароли для любого подтвержденного электронного письма?
2. Проверка электронной почты-это просто проверка правильности введенного электронного письма или нет. Если это правильно, вы можете войти в свою почту и подтвердить ссылку для подтверждения, нажав на нее. Независимо от того, какой пароль вы установили на firebase во время регистрации.
3. Сначала создайте пользователя с firebase (с вашей собственной электронной почтой и любым паролем, который вы хотите), а затем после того, как вы сможете отправить ссылку для подтверждения электронной почты, если вы хотите только подтвердить электронную почту.
4. Вы можете использовать
FirebaseAuth.instance.createUserWithEmailAndPassword(email: email, password: password)
в качестве пароля, вы можете выбрать все, что захотите