Наша компания использует несколько веб-сайтов, работающих на разных платформах и в разных базах данных (в основном WordPress).
Я пытаюсь построить интеграцию между этими сайтами.
Если пользователь входит в свою учетную запись на одном из наших веб-сайтов, на других наших веб-сайтах необходимо выполнить автоматический вход.
Для этого я пытаюсь использовать WordPress API:
add_action('rest_api_init', function(){
register_rest_route(
'odp-api/v1',
'/universal-login',
array(
'methods' => 'POST',
'callback' => 'universal_login'
)
);
});
function universal_login(WP_REST_Request $request){
$feedback = array();
$posted = $request->get_body_params();
if(isset($posted['user_login']) && isset($posted['user_password'])){
$posted['remember'] = (isset($posted['remember']) ? $posted['remember']: 0);
$user = wp_signon($posted, is_ssl());
if(!is_wp_error($user)){
$feedback['success'] = 'Success';
} else{
$feedback['error'] = $user->get_error_message();
}
} else{
$feedback['error'] = 'Invalid account credentials.';
}
return $feedback;
}
Вышеуказанные действие и функция регистрируют пользовательский маршрут API, который я вызываю следующим образом:
$response = wp_safe_remote_post(
ODP_UNIVERSAL_URL . 'wp-json/odp-api/v1/universal-login',
array(
'method' => 'POST',
'body' => array(
'user_login' => $user_login,
'user_password' => $user_password,
'remember' => (isset($_POST['rememberme']) && $_POST['rememberme'] === 'forever' ? 1 : 0)
)
)
);
Я получаю сообщение об успешной обратной связи и могу получить доступ к только что вошли данные пользователя, но при посещении сайта становится ясно, что я / пользователь фактически не вошел в систему.
Из того, что я нашел в Интернете, похоже, что оно связано либо с определением COOKIE_DOMAIN, либо с чем-то, не имеющим подтверждения.
Почему пользователь выбирается успешно, удаленно, но не вошел в систему?
Есть ли более простой способ удаленного входа пользователя в систему с помощью WordPress?
Идея состоит в том, чтобы войти в систему из одной установки WordPress и автоматически войти в другую установку WordPress в другом домене. Все наши сайты работают с SSL-шифрованием.
Задача ещё не решена.
Других решений пока нет …