Wordpress-如何使用REST API更新用户密码

DD7*_*D77 7 api rest wordpress android woocommerce

我wordpress也woocommerce用于我的网上商店,也woocommerce REST API用于Android app。

我已经使用WP REST API和JWT Authentication for WP-API插件来进行用户身份验证和通过rest api登录。

现在,当我使用下面的api更改密码时

https://www.my-domain.com/wp-json/wp/v2/users/<id>
Run Code Online (Sandbox Code Playgroud)

低于错误

{“ code”:“ rest_cannot_edit”,“ message”:“对不起,您不能编辑此用户。”,“ data”:{“ status”:401}}

我不知道为什么在登录时进行一次身份验证会收到此错误。谁能帮帮我吗?

man*_*tel 5

创建您的自定义 api

网址

https://yourdomain/api/change_password.php

范围

user_id:10
password:123456  //current password 
new_password:123456
Run Code Online (Sandbox Code Playgroud)

在 root 中创建文件夹api并创建文件 change_password.php

更改密码.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;

?>
Run Code Online (Sandbox Code Playgroud)

它对我来说是 100% 的工作,试试吧


Rub*_*ero 0

您需要通过 ajax 调用传递会话令牌/承载/随机数。这里有您感兴趣的特定文档:

https://developer.wordpress.org/rest-api/using-the-rest-api/authentication/#cookie-authentication