将以下代码添加到您的WordPress中(可以通过(子)主题的functions.php
或创建并启用自己的插件来实现):
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);
}
创建了一个名为/remote-login/login的新REST路由(您可以在register_rest_route
调用中将其更改为任何您喜欢的内容)。新创建的REST路由也将列在https://YOUR_DOMAIN_HERE/wp-json/上。
接下来,您可以从Flutter应用程序内部POST用户名和密码,例如:
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) {
在这个例子中,状态码可以是200或403。如果是200,则表示登录成功,因此无需查看响应JSON的成功部分。