我有一个自定义端点,它只返回一个测试字符串。我可以通过导航到mydomain.com/wp-json/mytools/v1/method/get_user_data
来到达该端点并且它正确地返回我的测试字符串,但是,我希望能够使用Javascript到达该端点,并且,我读到wp-api自动处理身份验证所以我应该能够使用此方法获取当前登录用户。
我需要的是能够使用wp.api.mytools.method.get_current_user
之类的东西并获取当前登录用户的信息。这甚至可能吗?
这是我创建端点的方式:
register_rest_route( 'mytools/v1', '/method/(?P<method>[\w]+)', array(
'methods' => 'GET',
'callback' => 'invoke_method',
));
这是invoke_method
函数:
function invoke_method( WP_REST_Request $request ) {
return wp_get_current_user();
}
答案 0 :(得分:1)
此功能已由WordPress在WP_REST端点'... / wp-json / wp / v2 / users / me实现。除了登录的cookie,WP REST身份验证还需要由查询参数'_wpnonce'指定的随机数。通过调用wp_create_nonce('wp_rest')生成此nonce的值。一个普通的WordPress前端页面将包含脚本... / wp-includes / js / api-request.js。此脚本将定义一个包含此nonce的全局wpApiSettings.nonce,以便您可以使用请求'... / wp-json / wp / v2 / users / me?_wpnonce ='+ wpApiSettings.nonce。所以,你可以使用jQuery.get()。
jQuery.get(
'.../wp-json/wp/v2/users/me?_wpnonce=' + wpApiSettings.nonce,
function( response ) {
var userData = JSON.parse( response );
) }
);
如果您只想获得当前用户,我认为您不需要Backbone.js。 Backbone.js将使用CRUD同步集合和模型,你没有做任何这些。
答案 1 :(得分:0)
总的来说,是的,这是可能的。
具体来说,如果你wp-api
引用了wp.api.mytools.method.get_current_user
,那么它确实会处理身份验证。否则,您将需要使用Cookie,Nonce,Basic-Auth或JWT自己实现身份验证。
对于第二部分,绝对可以使用mytools
之类的东西来获取信息。您需要的是客户端库(node-wpapi),并将其扩展为包含您的类和函数,例如method
和char buffer[512]; // or whatever size you deem is appropriate
。
希望这有助于澄清