[решено] Я нашел много примеров того, как отправлять подтверждение по электронной почте пользователю, чтобы использовать приложение, но все они используют CloudFirestore, который мне совсем не помогает. В моем случае функции SignUp и входа в систему работают должным образом, но я хочу реализовать функцию проверки электронной почты, так как в данный момент пользователь может поместить любую электронную почту, которую он / она хочет, не имеет значения, существует она или нет, и все еще сможетвойти и использовать приложение. Я хочу избежать этого. Это мой код для регистрации и входа в систему:
Future<Map<String, dynamic>> signUp(String email, String password) async {
_isLoading = true;
notifyListeners();
const url =
'https://www.googleapis.com/identitytoolkit/v3/relyingparty/signupNewUser?key=';
final Map<String, dynamic> authData = {
'email': email,
'password': password,
'returnSecureToken': true
};
final http.Response response = await http.post(url,
body: json.encode(authData),
headers: {'Content-Type': 'application/json'});
final Map<String, dynamic> responseData = json.decode(response.body);
bool hasError = true;
String message = 'Something went wrong!';
if (responseData.containsKey('idToken')) {
hasError = false;
message = 'Authentication succeeded!';
_authenticatedUser = User(
id: responseData['localId'],
email: email,
token: responseData['idToken']);
setAuthTimeout(int.parse(responseData['expiresIn']));
_userSubject.add(true);
final DateTime now = DateTime.now();
final DateTime expiryTime =
now.add(Duration(seconds: int.parse(responseData['expiresIn'])));
//SAVING OF THE TOKEN ON THE DEVICE
final SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setString('token', responseData['idToken']);
prefs.setString('userEmail', email);
prefs.setString('userId', responseData['localId']);
prefs.setString('expiryTime', expiryTime.toIso8601String());
} else if (responseData['error']['message'] == 'EMAIL_EXISTS') {
message = 'This email already exists.';
}
_isLoading = false;
notifyListeners();
return {'success': !hasError, 'message': message};
}
Код для функции входа в систему практически одинаков, отличается только URL-ссылка. ('https://www.googleapis.com/identitytoolkit/v3/relyingparty/verifyPassword?key=') Я удалил здесь номер ключа bcs по соображениям безопасности. Любая помощь будет очень признательна!