WordPress – Cómo actualizar la contraseña de usuario usando REST API

2 minutos de lectura

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?

  • 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

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.

https://youtu.be/Mp7T7x1oxDk

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

¿Ha sido útil esta solución?