¿Cómo uso el complemento WP REST API y el complemento OAuth Server para permitir el registro y el inicio de sesión?

4

¿Hay proyectos de ejemplo que hagan lo mismo?

Quiero poder iniciar sesión y registrarme para cuentas en mi sitio a través de la API.

    
pregunta Louis93 26.08.2015 - 23:53

2 respuestas

2

Sé que es un poco exagerado, pero podría ayudar. Para cualquiera que busque la implementación de la API REST de WP con JWT, esta es nuestra solución.

Agrégalo a tu function.php

add_action('rest_api_init', 'wp_rest_user_endpoints');
/**
 * Register a new user
 *
 * @param  WP_REST_Request $request Full details about the request.
 * @return array $args.
 **/
function wp_rest_user_endpoints($request) {
  /**
   * Handle Register User request.
   */
  register_rest_route('wp/v2', 'users/register', array(
    'methods' => 'POST',
    'callback' => 'wc_rest_user_endpoint_handler',
  ));
}
function wc_rest_user_endpoint_handler($request = null) {
  $response = array();
  $parameters = $request->get_json_params();
  $username = sanitize_text_field($parameters['username']);
  $email = sanitize_text_field($parameters['email']);
  $password = sanitize_text_field($parameters['password']);
  // $role = sanitize_text_field($parameters['role']);
  $error = new WP_Error();
  if (empty($username)) {
    $error->add(400, __("Username field 'username' is required.", 'wp-rest-user'), array('status' => 400));
    return $error;
  }
  if (empty($email)) {
    $error->add(401, __("Email field 'email' is required.", 'wp-rest-user'), array('status' => 400));
    return $error;
  }
  if (empty($password)) {
    $error->add(404, __("Password field 'password' is required.", 'wp-rest-user'), array('status' => 400));
    return $error;
  }
  // if (empty($role)) {
  //  $role = 'subscriber';
  // } else {
  //     if ($GLOBALS['wp_roles']->is_role($role)) {
  //      // Silence is gold
  //     } else {
  //    $error->add(405, __("Role field 'role' is not a valid. Check your User Roles from Dashboard.", 'wp_rest_user'), array('status' => 400));
  //    return $error;
  //     }
  // }
  $user_id = username_exists($username);
  if (!$user_id && email_exists($email) == false) {
    $user_id = wp_create_user($username, $password, $email);
    if (!is_wp_error($user_id)) {
      // Ger User Meta Data (Sensitive, Password included. DO NOT pass to front end.)
      $user = get_user_by('id', $user_id);
      // $user->set_role($role);
      $user->set_role('subscriber');
      // WooCommerce specific code
      if (class_exists('WooCommerce')) {
        $user->set_role('customer');
      }
      // Ger User Data (Non-Sensitive, Pass to front end.)
      $response['code'] = 200;
      $response['message'] = __("User '" . $username . "' Registration was Successful", "wp-rest-user");
    } else {
      return $user_id;
    }
  } else {
    $error->add(406, __("Email already exists, please try 'Reset Password'", 'wp-rest-user'), array('status' => 400));
    return $error;
  }
  return new WP_REST_Response($response, 123);
}

En mi humilde opinión, una mejor manera sería incluir la función adicional como un complemento separado. Así que incluso cuando tu usuario haya cambiado de tema, tus llamadas a la API no se verán afectadas.

Por lo tanto, he desarrollado un complemento para el registro de usuarios a través de la API REST en WordPress. Mejor aún, ¡también admite la creación de 'clientes' para WooCommerce!

Usuario de WP REST , verifíquelo si lo desea.

    
respondido por el Jack Song 30.04.2018 - 19:56
1

Hay muchos ejemplos de registro de usuarios que utilizan la API REST WP y la implementación del servidor OAuth para la API WP enlace .

Estoy seguro de que hace menos de 6 meses, cuando publicaste originalmente, pero aquí hay un par de excelentes ejemplos que te ayudarán a continuar.

También hay algunos complementos que comienzan a aparecer.

    
respondido por el Joe Dooley 02.03.2016 - 01:52

Lea otras preguntas en las etiquetas