记录一个wordpress安装JWT Authentication for WP-API插件并在postman中测试的过程

安装插件很简单,插件下载地址:JWT Authentication for WP REST API,下载后,上传到服务器,然后启用即可。

接下来需要设置两个文件:

1. 修改网站根目录下的.htaccess

<IfModule mod_rewrite.c>

之前添加

SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1

<IfModule mod_rewrite.c>

</IfModule>

之间添加:

RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]

由于.htaccess权限问题,在“BEGIN WordPress”与“END WordPress”之间的指令(行)是动态生成的,只应被WordPress过滤器修改。任何对标记之间的指令的修改都会被覆盖。因此,你可以直接在.htaccess文件中新增一段代码:

SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]
</IfModule>

2. 修改网站根目录下的 wp-config.php

/**#@+
 * 身份认证密钥与盐。
 *
 * 修改为任意独一无二的字串!
 * 或者直接访问{@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org密钥生成服务}
 * 任何修改都会导致所有cookies失效,所有用户将必须重新登录。
 *
 * @since 2.6.0
 */

这一部分里新增两行:

define( 'JWT_AUTH_SECRET_KEY', '你的密钥');
define( 'JWT_AUTH_CORS_ENABLE', true);

密钥可以通过访问https://api.wordpress.org/secret-key/1.1/salt/获得一个随机字符串。

当插件被激活时,一个新的命名空间被添加:

/jwt-auth/v1
/wp-json/jwt-auth/v1/token | POST
/wp-json/jwt-auth/v1/token/validate | POST

3. 请求token

打开postman,这一步很多人会搞糊涂,我详细说明一下:
3.1 request方式,选择POST,endpoint 为 https://yourdomain/wp-json/jwt-auth/v1/token
3.2 Authentication --- No Auth

3.3 Headers --- 默认的勾选取消掉!

3.4 Body --- 选择from-data,在其下新增两个字段 username 和 password ,其他默认的字段勾选取消掉!

3.5 点击SEND蓝色按钮,发送请求,获取access token,出现下方这个图示的样子,表示成功了。

测试成功后,在前台部署如下代码:

$token_api_url = 'https://www.yourdomain.com/wp-json/jwt-auth/v1/token';
$body = array( 'username' => $username, 'password' => $password);
$requestToken = new WP_Http;
$requestTokenResult = $requestToken->request( $token_api_url , array( 'method' => 'POST', 'body' => $body) );	
$requestTokenResultBody =  json_decode($requestTokenResult['body'],true);
$postToken = $requestTokenResultBody['token'];

获取到token之后存cookie或localstorage中。

4.请求接口

测试通过API来发布新文章,每次POST请求时都在header头带上token:

$post_request_api = 'https://www.yourdomain.com/wp-json/wp/v2/posts';
$postbody = array( 'title' => $videoTitle, 'content' => $message);
$headers = array('Authorization' => 'Bearer'.$postToken);
$requestPost = new WP_Http;
$postResult = $requestPost->request( $post_request_api , array( 'method' => 'POST', 'body' => $postbody, 'headers' => $headers ) );

文章提交之后暂存在草稿箱里,接下来你就可以到后台批量发布了。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注