0

I installed the "JWT Authentication for WP REST API" plugin for user authentication through an Ionic app. Although authentication was successful, attempting to find a way to register users from the mobile app proved to be a particularly difficult task.

Is there a way to register users from the API given by WordPress? Or is there some preferred way to implement this on the admin console to enable this behavior?

I'm completely helpless here. The data is 'POST'ed through query parameters to the base url, and gives a 302 response, but when I resend the request through Fiddler it gives a 200 OK. And when I attempt to replicate the request on Postman it also gives a 200 OK.

I considered the JSON API plugin with the JSON API USER plugin route, but these don't seem to be under active development. I've read somewhere this gets done with GET and a cookie or something?

bumped to the homepage by Community 2 days ago

This question has answers that may be good or bad; the system has marked it active so that they can be reviewed.

0

The JSON API plugin is not needed, as the REST API is part of WordPress core (as of about Version 4.7, if I recall correctly).

You can indeed create a user via WordPress's REST API — you pass a POST request to the server with the appropriate arguments. The POST data must include, at a minimum, the user's username, email, and password.

Note that you'll need to be authenticated in order to create a user.

References

Caveat: I have not done this myself, but according to the documentation it should be possible.

  • the problem is that I'm trying to authenticate on a mobile device, for which cookies aren't implemented. I installed the JSON API so that I could store the token in local storage. I'm making an adaptation of an existing wordpress page, from which people are allowed to create users. I wanted to find a way to emulate whatever the wordpress client does, but from Ionic. I'm unsure if this can be done by getting a cookie before the post or whatever else. – Cuzox Sep 11 '17 at 1:22
  • Down at the bottom of the REST API » Authentication page, there's a section that talks about alternatives to cookie-based authentication. Do any of those options meet your needs? – Pat J Sep 11 '17 at 14:05
  • I can authenticate existent users, what I can't do is create users from the mobile app. – Cuzox Sep 12 '17 at 2:36
  • You can't create a new WordPress user without first being authenticated. One of the alternative authentication methods might help you (eg, OAuth or JSON Web Tokens). If you investigate those options, you might find the piece you need to allow your mobile app to authenticate so that you can then create new users via the app. – Pat J Sep 12 '17 at 13:31
0

This does not use the API, but it's a script I've used a hundred times over the years, always works. Simply drop it in the root of your install and then access the file directly. Remember to delete the file immediately afterward. I do not remember where I originally obtained this script.

<?php
// ADD NEW ADMIN USER TO WORDPRESS
// ----------------------------------
// Put this file in your Wordpress root directory and run it from your browser.
// Delete it when you're done.
require_once('wp-blog-header.php');
require_once('wp-includes/registration.php');
// ----------------------------------------------------
// CONFIG VARIABLES
// Make sure that you set these before running the file.
$newusername = 'your_username';
$newpassword = 'youer_password';
$newemail = 'email@youremail.com';
// ----------------------------------------------------
// This is just a security precaution, to make sure the above "Config Variables" 
// have been changed from their default values.
if ( $newpassword != 'YOURPASSWORD' &&
     $newemail != 'YOUREMAIL@TEST.com' &&
     $newusername !='YOURUSERNAME' )
{
    // Check that user doesn't already exist 
    if ( !username_exists($newusername) && !email_exists($newemail) )
    {
        // Create user and set role to administrator
        $user_id = wp_create_user( $newusername, $newpassword, $newemail);
        if ( is_int($user_id) )
        {
            $wp_user_object = new WP_User($user_id);
            $wp_user_object->set_role('administrator');
            echo 'Successfully created new admin user. Now delete this file!';
        }
        else {
            echo 'Error with wp_insert_user. No users were created.';
        }
    }
    else {
        echo 'This user or email already exists. Nothing was done.';
    }
}
else {
    echo 'Whoops, looks like you did not set a password, username, or email';
    echo 'before running the script. Set these variables and try again.';
}

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.