web-dev-qa-db-fra.com

Comment utiliser le WP REST Le plug-in API et le plug-in OAuth Server pour permettre l'enregistrement et la connexion?

Existe-t-il des exemples de projets qui font la même chose?

Je veux pouvoir me connecter et m'inscrire pour des comptes sur mon site via l'API.

4
Louis93

Je sais que c'est un peu exagéré, mais pourrait aider. Pour ceux qui recherchent une implémentation de l'API WP REST avec JWT, voici notre solution.

Ajoutez-le à votre 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);
}

IMHO, un meilleur moyen d'inclure la fonction supplémentaire en tant que plugin séparé. Ainsi, même si votre utilisateur a changé de thème, vos appels d'API ne seront pas affectés.

J'ai donc développé un plugin pour l'enregistrement de l'utilisateur via l'API REST dans WordPress. Mieux encore, il prend en charge la création de "client" pour WooCommerce aussi!

WP REST Utilisateur , vérifiez-le si vous le souhaitez.

2
Jack Song

Il existe de nombreux exemples d’enregistrement d’utilisateurs utilisant l’API WP REST et l’implémentation du serveur OAuth pour WP API http: //oauth1.wp- api.org/ .

Je suis sûr qu'il y a moins de 6 mois lorsque vous avez posté votre article, mais voici quelques excellents exemples qui vous permettront de démarrer.

Il y a aussi quelques plugins qui commencent à faire surface.

1
Joe Dooley