我正在使用wordpress
以及woocommerce
作为我的网络商店,也使用woocommerce REST API
为Android app
。
我使用WP REST API
和JWT Authentication for WP-API
插件进行用户身份验证,并通过rest登录。
现在,当我使用下面的api更改密码时
https://www.my-domain.com/wp-json/wp/v2/users/<id>
降至误差以下
{“代码”:"rest_cannot_edit",“消息”:“对不起,您不允许编辑这个用户。”,“数据”:{“状态”:401 }
我不知道为什么要得到这个错误,因为身份验证是在登录时完成的。有人能帮帮我吗?
发布于 2020-04-29 17:47:40
创建自定义api
URL
参数
user_id:10
password:123456 //current password
new_password:123456
在根目录中创建文件夹api并创建文件change_password.php
change_password.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%的试一试
发布于 2017-10-12 13:54:28
我也有过类似的问题。如果您已经执行了插件文档页面中提到的所有步骤,那么您用于获取令牌的帐户可能会出现问题。
下面是我创建的一个视频,它详细介绍了插件的整个安装/安装过程。试着按照我概述的步骤进行测试。
发布于 2018-12-21 06:40:49
添加以下行,尝试编辑.htaccess文件
RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
和wp-config.php通过添加
define('JWT_AUTH_SECRET_KEY', 'your-top-secret-key');
不要忘记在头API调用中传递您的JWT_token,如
*Authorization : 'Bearer ' + YOUR_JWT_TOKEN*
https://stackoverflow.com/questions/42994905
复制相似问题