我已经在WordPress中创建了自定义API,我正在这个API中获取WooCommerce订阅数据,并且它可以按照我的要求正常工作。
然而,现在我想在这个应用编程接口中添加基本的身份验证,它可以像其他WooCommerce应用编程接口endpoint一样检查消费者密钥和秘密。
这是我想要检查基本身份验证的示例API。
// Action to execute Rest API routes
add_action('rest_api_init', function () {
// Getting Product data based on subscription id
register_rest_route('getproductdata', '/(?P<id>\d+)', array(
'methods' => 'GET',
'callback' => 'getProductData',
));
});
function getProductData($request) {
// I WANT TO CHECK BASIC AUTHENTICATION HERE BEFORE EXECUTING BELOW CODE
die('inside my api');
}
我查过了https://woocommerce.github.io/woocommerce-rest-api-docs/#authentication-通过http和https://wordpress.stackexchange.com/questions/355041/how-to-authenticate-custom-api-endpoint-in-woocommerce这是一个URL,但我还没有找到合适的方法或过滤器或教程来完成我的要求。
至少有人能指导我如何在这里添加身份验证吗。。如有任何建议,将不胜感激。
谢啦
在这种情况下,您可以使用permission\u回调
键:
// Action to execute Rest API routes
add_action('rest_api_init', function () {
// Getting Product data based on subscription id
register_rest_route('getproductdata', '/(?P<id>\d+)', array(
'methods' => 'GET',
'callback' => 'getProductData',
'permission_callback' => 'restCheckUser'
));
});
function getProductData($request) {
// I WANT TO CHECK BASIC AUTHENTICATION HERE BEFORE EXECUTING BELOW CODE
die('inside my api');
}
function restCheckUser(WP_REST_Request $request) {
if ('get_token_from_database' === $request->get_param('token')) {
return true;
}
return false;
}
完整文件在此-https://developer.wordpress.org/rest-api/extending-the-rest-api/adding-custom-endpoints/
好的,伙计们。。最后,我使用WP-restapi的JWT身份验证在我的定制endpointAPI中进行了身份验证。
感谢大家的帮助、支持和指导。