Chicos, estoy tratando de crear un punto final con la API REST que registrará al usuario que va al punto final. ¿Alguna idea sobre cómo hacerlo correctamente? Esto es lo que tengo hasta ahora:
function mm_login_user( $request = null ) {
$response = array();
$parameters = $request->get_json_params();
isset( $parameters[ 'user_login' ] ) ? $user_login = sanitize_text_field( $parameters[ 'user_login' ] ) : $user_login = '';
isset( $parameters[ 'user_password' ] ) ? $user_password = sanitize_text_field( $parameters[ 'user_password' ] ) : $user_password = '';
$error = new WP_Error();
if ( empty( $user_login ) ) {
$error->add( 400, __( "user_login field is required.", 'mm' ), array( 'status' => 400 ) );
return $error;
}
if ( empty( $user_password ) ) {
$error->add( 400, __( "user_password field is required.", 'mm' ), array( 'status' => 400 ) );
return $error;
}
$creds = array(
'user_login' => $user_login,
'user_password' => $user_password,
'remember' => true
);
$user = wp_signon( $creds, false );
if ( is_wp_error( $user ) ) {
$error->add( 400, __( "Invalid Username or Password.", 'mm' ), array( 'status' => 400 ) );
return $error;
}
wp_set_current_user( $user->ID );
$auth_cookie = wp_generate_auth_cookie( $user->ID, mm_keep_me_logged_in_for_1_year(), 'auth' );
$auth_cookie_logged_in = wp_generate_auth_cookie( $user->ID, mm_keep_me_logged_in_for_1_year(), 'logged_in' );
$response[ 'auth_cookie' ] = $auth_cookie;
$response[ 'auth_cookie_logged_in' ] = $auth_cookie_logged_in;
$response[ 'wp_nonce' ] = wp_create_nonce( 'wp_rest' );
$response[ 'code' ] = 200;
$response[ 'message' ] = __( "User Logged In.", "mm" );
set_transient( 'user_id', $user->ID );
return new WP_REST_Response( $response, 200 );
}
El problema aquí es que si intento registrar al usuario aquí con:
wp_set_current_user( $transient, $user->user_login );
wp_set_auth_cookie( $transient, true );
Los servidores lanzan 502. Es por eso que configuré un transitorio que luego uso para iniciar sesión en el usuario en “template_redirect”, pero el problema aquí es cuando el usuario inicia sesión y alguien más usa el punto final, patea al usuario actual y ahora todos están registrado como el último usuario que ha utilizado el punto final. Ayuda por favor estoy atascado :((
¿Ha sido útil esta solución?
Tu feedback nos ayuda a saber si la solución es correcta y está funcionando. De esta manera podemos revisar y corregir el contenido.
tal vez intente autenticación básicao usarlo como punto de partida, otra solución basada en tokens y códigos QR es qr-usuario-login
– Hyyan Abo Fakher
19 de julio de 2018 a las 14:48
Códigos QR?? ¿Eh?
– Greg Burkett
19 de julio de 2018 a las 16:29
También inicio sesión para la API de descanso para el teléfono móvil para exponer API como inicio de sesión.registro,contraseña perdida,editar perfil. si hay alguna solucion. por favor publique aquí. sera de gran ayuda para mi.
-Pramod Kharade
10 de junio de 2019 a las 5:45
La solución es bastante larga y todo lo que puedo hacer es publicar un enlace aquí: github.com/YuxelOsmanow/wp-login-user-via-api
– Yuxel Yuseinov
28 ago. 2019 a las 16:30