Конечная точка API Woocommerce Login Custome - PullRequest
0 голосов
/ 08 мая 2018

Я занимаюсь разработкой приложения с использованием магазина woocommerece и использования API-интерфейса REST Woocommerce для выборки продуктов и деталей заказа, но теперь я сталкиваюсь с проблемой при входе в систему, поскольку Woocommerce не предоставила API такого типа. Итак, я создаю пользовательскую конечную точку и пробую это, но получаю ошибку 404, маршрут покоя недоступен.

Вот мой конечный пункт, который я зарегистрировал.

add_action( 'rest_api_init', function () {
 register_rest_route( 'wc/v2', '/login/)', array(
 'methods' => 'POST',
 'callback'=> 'my_awesome_func',
 'args' => array(
 ), 
 ) );
} );

Вот логин логина, но я думаю, что где-то делаю что-то не так, пожалуйста, проверьте и помогите мне.

function my_awesome_func( WP_REST_Request $request ) {
global $wpdb;
$username = $request['email'];
$password = $request['password'];
$db = new DbOperation();
    $response = array();    
    $login_data = array();
    $login_data['user_login'] = $username;
    $login_data['user_password'] = $password;
    $results = $wpdb->get_row( "SELECT ID FROM rd_users WHERE user_email='".$username."'");
    $activation_id = $results->ID;
    $activation_key =  get_user_meta( $activation_id, 'has_to_be_activated', true );
    if($activation_key != false ){
       $results = 2;//if activation key exists than show the error
    }
     else{
            $user_verify = wp_signon( $login_data, false ); 
            if ( is_wp_error($user_verify) ) 
            {
              $results = 0; //show invalid username and password.
            }
             else {    
               $results = 1; //login success.
            }
    }
    if ($results== 1) {
    $user_info = get_userdata($student[0]->ID);
    $response['id'] = $user_info->ID;
    $response['name'] = $user_info->display_name;
    $response['fname'] = $user_info->first_name;
    $response['lname'] = $user_info->last_name;
    $response['email'] = $user_info->user_email;
    $response['status'] = 1;
    $response["error"] = false;
    $response['message'] = "You have successfully Logedin!";
} else {
    if($results == 0){
    $response['status'] = 0;
    $response["error"] = true;
    $response['message'] = "Invalid username or password";
    }
    else{
        $response['status'] = 2;
        $response["error"] = true;
        $response['message'] ="Your account has not been activated yet.
         To activate it check your email and clik on the activation link.";
        }
}
return  $response;

}

1 Ответ

0 голосов
/ 10 мая 2018

Посмотри, что я нашел, используется аутентификация https. В почтальоне вместо использования oAuth1.0 в качестве аутентификации используйте обычную аутентификацию и передайте ключ потребителя в качестве имени пользователя. И пароль должен быть секретом потребителя.

Надеюсь, это сработает.

...