安装插件很简单,插件下载地址: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 ) );
文章提交之后暂存在草稿箱里,接下来你就可以到后台批量发布了。