使用WordPress用户进行Android原生应用验证

时间:2015-08-13 16:37:56

标签: android wordpress authentication login

我正在制作原生Android应用。我有一个WordPress网站,有一些用户。我希望我的WordPress用户使用相同的登录名和密码登录我的应用程序。我想要一个非常流畅的登录过程,没有任何webview或Web浏览器。 可能吗 ?你会推荐什么 ?

1 个答案:

答案 0 :(得分:3)

是的,这是可能的。你想要从应用程序端执行的所有操作,我建议将这些操作作为ajax函数添加到wordpress端(它更加清晰和组织方式 - 你可以将你的通信基于json)。关于逻辑,您可以使用两种不同的方式实现它:

  • 假设您要实现一个允许用户注册,登录和创建帖子的应用程序。

第一路

 class App {

    public function __construct(){
        add_action( 'wp_ajax_nopriv_registerUser', array( $this, 'registerUser' ) );
        add_action( 'wp_ajax_nopriv_loginUser', array( $this, 'loginUser' ) );
        add_action( 'wp_ajax_nopriv_createPost', array( $this, 'createPost' ) );
    }


    public function registerUser() {
        //obviusly, you dont need any kind of auth over here
    }

    public function loginUser() {
        $username = //collect,sanitize data from post
        $password = //collect data from post

        $user = get_user_by( 'login', $username );
        if( wp_check_password( $password, $user->user_pass ) ) {
             //preform what you need to preform
             //construct successful result array
        }
        else {
            //populate result array with an error or something
        }
        wp_send_json( $result );
    }

    public function createPost() {

      $username = //collect,sanitize data from post
      $password = //collect data from post
      //collect rest of the data related with post by itself

      $user = get_user_by( 'login', $username );
      if( wp_check_password( $password, $user->user_pass ) ) {
           //insert post, construct successfully array 
      }
      else {
          //populate result array with an error or something
      }
      wp_send_json($result);

    }


}

正如您在上面的示例中所看到的,您可以根据需要注册尽可能多的ajax函数,并且在每个函数中都可以进行用户检查和密码检查,这样可以正常工作。重点是,对于您想要从移动应用程序中执行的每个操作,您需要使用其他参数发送用户名/密码(您可以在应用程序端首次成功登录时存储这些用户名/密码)。

第二路 上面的例子,有一点不同。您可以(在应用程序端的第一次登录请求期间),在php端生成唯一的guid,您可以将其保存在wp数据库中,并将其返回到您的应用程序端(您可以将其保存在应用程序端)。对于每个下一个请求,您可以从应用程序端发送该guid和用户名,确认该用户已经登录并可以执行特权操作。没有太大的区别(从性能的角度来看,我认为在两种情况下你都只需要执行一个查询 - 从auth的角度来看,你可以预先形成一些测试来确认这一点WP_User class )。如果您需要识别从一端到另一端的不同登录会话,那么第二种方法很有价值(如果应用程序崩溃并且您想要检查您的身边用户是否希望在他/她已经“已登录”时执行登录,或者您希望禁止从每个用户的多个应用程序登录。)