Android Wordpress-如何使用RESTAPI更新用户密码
我正在为我的网络商店使用Android Wordpress-如何使用RESTAPI更新用户密码,android,wordpress,rest,api,woocommerce,Android,Wordpress,Rest,Api,Woocommerce,我正在为我的网络商店使用WoodPress以及woocommerce,并为Android应用程序使用woocommerce REST API 我使用了WP-restapi和JWT验证WP-API插件进行用户身份验证和通过restapi登录 现在当我使用下面的api更改密码时 https://www.my-domain.com/wp-json/wp/v2/users/<id> https://www.my-domain.com/wp-json/wp/v2/users/ 低于误差 {
WoodPress
以及woocommerce
,并为Android应用程序使用woocommerce REST API
我使用了WP-restapi
和JWT验证WP-API
插件进行用户身份验证和通过restapi登录
现在当我使用下面的api更改密码时
https://www.my-domain.com/wp-json/wp/v2/users/<id>
https://www.my-domain.com/wp-json/wp/v2/users/
低于误差
{“code”:“rest\u无法编辑”,“message”:“抱歉,不允许您访问”
要编辑此用户,请执行以下操作:{“状态”:401}
我不知道为什么会出现这个错误,因为身份验证在登录时只进行了一次。有人能帮我吗?您需要在ajax调用中传递会话令牌/承载者/nonce。这里是您感兴趣的具体文档:
我也有类似的问题。如果您已经执行了插件文档页面上提到的所有步骤,那么您用于获取令牌的帐户可能存在问题
下面是我创建的一个视频,详细介绍了插件的整个安装/设置过程。尝试按照我概述的步骤进行操作,然后再次测试
通过添加以下行,尝试编辑.htaccess文件
RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
通过添加
define('JWT_AUTH_SECRET_KEY', 'your-top-secret-key');
不要忘记在头API调用中传递JWT_令牌,如
*Authorization : 'Bearer ' + YOUR_JWT_TOKEN*
创建自定义api
URL
参数
user_id:10
password:123456 //current password
new_password:123456
在root中创建文件夹api,并创建文件change\u 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;
?>
这对我来说100%有效,试试看见dock。我已经做到了@阿米特维索迪亚