如何使用WP rest API插件和OAuth服务器插件进行注册和登录?

时间:2015-08-26 作者:Louis93

有没有类似的示例项目?

我希望能够通过API登录并注册我网站上的帐户。

2 个回复
SO网友:Jack Song

我知道这有点牵强,但可能会有所帮助。对于任何希望使用JWT实现WP REST API的人,这里是我们的解决方案。

将其添加到函数中。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);
}
依我看,更好的方法是将附加功能作为一个单独的插件。因此,即使用户更改了主题,api调用也不会受到影响。

因此我开发了plugin 用于通过WordPress中的REST API进行用户注册。更好的是,它还支持为WooCommerce创建“客户”!

WP REST User, 如果你想的话就去看看吧。

SO网友:Joe Dooley

有许多使用WP REST API和针对WP API的OAuth服务器实现进行用户注册的示例http://oauth1.wp-api.org/.

我敢肯定,6个月前你最初发帖的时候已经不多了,但这里有几个很好的例子可以帮助你继续发帖。