programing

Wordpress - REST API를 사용하여 사용자 비밀번호를 업데이트하는 방법

nicescript 2023. 4. 2. 12:47
반응형

Wordpress - REST API를 사용하여 사용자 비밀번호를 업데이트하는 방법

사용하고 있다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>

에러를 밑돌다

{ "code": "rest_cannot_edit", "message": "죄송합니다. 이 사용자를 편집할 수 없습니다.". "data": { "status": 401 } }

로그인 시 인증이 한 번 이루어지기 때문에 왜 이 오류가 발생하는지 알 수 없습니다.누구 저 좀 도와주세요.

커스텀 API 생성

URL

https://yourdomain/api/change_password.module

파라미터

user_id:10
password:123456  //current password 
new_password:123456

root에 폴더 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% 작동한다.

저도 비슷한 문제가 있었어요.플러그인의 설명서 페이지에 나와 있는 모든 단계를 수행한 경우 토큰을 가져오는 데 사용하는 계정에 문제가 있을 수 있습니다.

아래는 플러그인의 설치/셋업 프로세스 전체를 상세하게 나타낸 동영상입니다.설명한 절차에 따라 다시 테스트해 보십시오.

https://youtu.be/Mp7T7x1oxDk

다음 행을 추가하여 .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*

ajax 콜에서는 세션토큰/비어/논스를 전달해야 합니다.여기에 특정 관심 문서가 있습니다.

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

언급URL : https://stackoverflow.com/questions/42994905/wordpress-how-to-update-user-password-using-rest-api

반응형