0

I want to login via wordpresss api. I tried with "/wp-json/wp/v2/users" . but it just returns user 1 details.

My goal is login via api and fetch all profile information.

1

3 Answers 3

2

1. Install and activate JWT Authentication for WP REST API plugin, also install WP REST API plugin
2. Now you can run any wordpress default api from mobile app or any other source or by postman. for example hit this url from your app or by postman. https://example.com/wp-json/wp/v2/posts
3. By app or by postman, When you will login with valid details (using rest api) you will get back a token. To login and get token, run the following url by postman or by app https://example.com/wp-json/jwt-auth/v1/token
4. By this way you will get a token as shown in picture postman and jwt authentication
Now use this token to get logged in user details, for example
5. make function in function.php

function checkloggedinuser()
{
$currentuserid_fromjwt = get_current_user_id();
print_r($currentuserid_fromjwt);
exit;
}

 add_action('rest_api_init', function ()
{
  register_rest_route( 'testone', 'loggedinuser',array(
  'methods' => 'POST',
  'callback' => 'checkloggedinuser'
  ));
});


6. Now again run this new url in postman or in app to get logged in user details. https://example.com/wp-json/testone/loggedinuser (replace example.com with your url) enter image description here

0

Hello I have a faster and better solution to get the ID and more like the user avatar.

Just add this to your functions.php file:

/*
 * Insert some additional data to the JWT Auth plugin
 */
function jwt_auth_function($data, $user) { 
    $data['user_role'] = $user->roles; 
    $data['user_id'] = $user->ID; 
    $data['avatar']= get_avatar_url($user->ID);
    return $data; 
} 
add_filter( 'jwt_auth_token_before_dispatch', 'jwt_auth_function', 10, 2 );

Reference: How to ger ID user via API

I hope that's helped

-3

Solved:

add_action( 'rest_api_init', 'register_api_hooks' );
function register_api_hooks() {
  register_rest_route(
    'custom-plugin', '/login/',
    array(
      'methods'  => 'POST',
      'callback' => 'login',
    )
  );
}
function login($request){
    $creds = array();
    $creds['user_login'] = $request["username"];
    $creds['user_password'] =  $request["password"];
    $creds['remember'] = true;
    $user = wp_signon( $creds, true );


    if ( is_wp_error($user) )
      echo $user->get_error_message();

    $id = $user->ID;
    $meta = get_user_meta($id);

    return $meta;
}
7
  • This is very insecure. You're sending the username and password openly in the URL. Commented Aug 19, 2018 at 4:23
  • Actually, I want to call it from android. Commented Aug 19, 2018 at 4:30
  • Doesn’t matter. Please read the link to the documentation I posted as a comment. There are proper, safer, ways to do this. Commented Aug 19, 2018 at 4:33
  • @JacobPeattie Would it be ok to use if we use POST instead of GET? The WP documentation link you gave actually was the first place I went to but it does not seem to cover anything about how to log in.
    – Betty
    Commented Mar 30, 2019 at 1:42
  • @Jacob, Post method data. So, its secure. Commented Oct 21, 2019 at 8:27

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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