環境:wordpress 4.7 以上,WP自帶的 rest api v2
目標:使用javascript與wp rest api交互,其中編輯、新增、刪除等需要Oauth認證授權
方法:
步驟一: 安裝wp插件 jwt-authentication-for-wp-rest-api
步驟二: 根據jwt插件文檔,修改.htaccess
一般服務器(.access文件配置):
RewriteEngine on
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
步驟三: 根據jwt插件文檔,修改wp-config.php
define('JWT_AUTH_SECRET_KEY', 'your-top-secrect-key');
define('JWT_AUTH_CORS_ENABLE', true);
其中的 'your-top-secrect-key' 可以參考https://api.wordpress.org/secret-key/1.1/salt/中的參數值,如:
define('JWT_AUTH_SECRET_KEY', '=i``G+H|} fSLR f,$8~&N#paMfPzrk6,e]Dg.-<|jip(H8C%) ^uO/ l~$3},fC');
步驟四:在js中請求token,然后在編輯等操作時在header中附帶上token值
$.ajax({
url:"http://localhost/wp-json/jwt-auth/v1/token",
method:"POST",
data:{
username:"admin",
password:"123456"
},
success:function(res){
console.log(res);
Token = res.token;
$.ajax({
url:"http://localhost/wp-json/wp/v2/posts/1",
method:"POST",
beforeSend: function(xhr) {
xhr.setRequestHeader("Authorization", "Bearer " + Token);
},
data:{
"title":"hello api"
},
success:function(res){
console.log(res);
},
error:function(res){
console.log(res);
}
});
},
error:function(res){
console.log(res);
}
});
