Добавьте следующий код в WordPress (либо через (1001 *) вашей (дочерней) темы, либо создав и включив собственный плагин):
add_action('rest_api_init', 'remoteLogin');
public static function remoteLogin($request = [])
{
register_rest_route('remote-login', 'login', array(
'methods' => 'POST',
'callback' => 'restUserLogin',
));
}
function restUserLogin($request = [])
{
$response = [
'success' => false,
'message' => 'Login failed'
];
$status_code = 403;
$parameters = $request->get_json_params();
$username = sanitize_text_field($parameters['username']);
$password = sanitize_text_field($parameters['password']);
$user = null;
if (!empty($username) && !empty($password)) {
$user = wp_authenticate($username, $password);
}
if ($user instanceof WP_User) {
$response['success'] = true;
$response['message'] = 'Login successful';
$status_code = 200;
}
return new WP_REST_Response($response, $status_code);
}
Новый маршрут REST с именем / remote-login / логин был создан (вы можете изменить это в вызове register_rest_route
на что угодно). Вновь созданный маршрут REST также будет указан в https://YOUR_DOMAIN_HERE / wp-json / .
Далее вы можете ПОСТАВИТЬ имя пользователя и пароль из приложения Flutter, например:
var url = 'https://YOUR_DOMAIN_HERE/wp-json/remote-login/login';
var body = jsonEncode({ 'username': 'USERNAME', 'password': 'SECRET' });
http.post(url,
headers: {"Content-Type": "application/json"},
body: body
).then((http.Response response) {
final int statusCode = response.statusCode;
if (statusCode == 200) {
// login successful...
В этом примере код состояния - либо 200, либо 403. Для 200 вход был успешным, поэтому не нужно даже смотреть на успешную часть ответа JSON.