estoy usando wordpress
también woocommerce
para mi tienda web y también usando woocommerce REST API
por Android app
.
he utilizado WP REST API
y JWT Authentication for WP-API
complementos para la autenticación de usuarios e inicio de sesión a través de la API de descanso.
Ahora, cuando estoy usando la siguiente API para cambiar la contraseña
https://www.my-domain.com/wp-json/wp/v2/users/<id>
obtener debajo del error
{ “code”: “rest_cannot_edit”, “message”: “Lo sentimos, no tienes permiso para editar este usuario”, “data”: { “status”: 401 } }
No sé por qué recibo este error, ya que la autenticación se realiza una vez en el momento del inicio de sesión. ¿Alguien puede ayudarme por favor?
Crea tu API personalizada
URL
https://tudominio/api/cambiar_contraseña.php
Parámetro
user_id:10
password:123456 //current password
new_password:123456
Crear carpeta API en la raíz y cree el archivo change_password.php
cambiar_contraseña.php
<?php
include '../wp-load.php';
$user_id = $_REQUEST['user_id'];
$user = get_user_by( 'id', $user_id );
$password = $_REQUEST['password'];
$new_password = $_REQUEST['new_password'];
if(empty($user_id)){
$json = array('code'=>'0','msg'=>'Please enter user id');
echo json_encode($json);
exit;
}
if(empty($password)){
$json = array('code'=>'0','msg'=>'Please enter old password');
echo json_encode($json);
exit;
}
if(empty($new_password)){
$json = array('code'=>'0','msg'=>'Please enter new password');
echo json_encode($json);
exit;
}
$hash = $user->data->user_pass;
$code = 500; $status = false;
if (wp_check_password( $password, $hash ) ){
$msg = 'Password updated successfully';
$code = 200; $status = true;
wp_set_password($new_password , $user_id);
}else{
$msg = 'Current password does not match.';
}
$json = array('code'=>$code,'status'=>$status,'msg'=>$msg);
echo json_encode($json);
exit;
?>
me funciona al 100% pruébalo
Tuve un problema similar. Si ha realizado todos los pasos mencionados en la página de documentación del complemento, es posible que haya un problema con la cuenta que está utilizando para obtener el token.
A continuación se muestra un video que creé que detalla todo el proceso de instalación/configuración del complemento. Intenta seguir los pasos que describí y vuelve a probar.
Intente editar su archivo .htaccess agregando las siguientes líneas
RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
y su wp-config.php agregando
define('JWT_AUTH_SECRET_KEY', 'your-top-secret-key');
no olvide pasar su JWT_token en la llamada API de encabezado, como
*Authorization : 'Bearer ' + YOUR_JWT_TOKEN*
Debe pasar un token de sesión/portador/nonce con su llamada ajax. Aquí tienes los documentos específicos de interés:
https://developer.wordpress.org/rest-api/using-the-rest-api/authentication/#cookie-authentication
Ver muelle. v2.wp-api.org/reference/users
– Amit Visodiya
24 de marzo de 2017 a las 8:48
Ya lo hice. @AmitVisodiya
– DD77
24 de marzo de 2017 a las 8:58