php - 带有 WooCommerce 身份验证的 WordPress 自定义 API
问题描述
我已经在 WordPress 中创建了自定义 API,并且我在这个 API 中获取了 WooCommerce 订阅数据,并且它可以根据我的要求正常工作。
但是,现在我想在这个 API 中添加基本身份验证,它可以像其他 WooCommerce API 端点一样检查消费者密钥和秘密。
这是我想要检查基本身份验证的示例 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-over-http和https://wordpress.stackexchange.com/questions/355041/how-to-authenticate-custom -api-endpoint-in-woocommerce这个网址,但我还没有找到合适的方法或过滤器或教程来满足我的要求。
至少有人可以指导我如何在此处添加身份验证..任何建议将不胜感激。
谢谢
解决方案
在这种情况下,您可以使用permission_callback
密钥:
// 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/
推荐阅读
- javascript - 填充数组中的位以使数组具有一定的长度
- javascript - React Hook 不断抛出错误缺少依赖项
- python - Selenium 到数据框以导出到 CSV
- python - 一般来说,我不擅长绘图、循环、数据框
- c# - 在使用 .net 核心时在 linux 服务器中定义文件的路径
- flutter - 两个插件具有相同的类名flutter
- google-apps-script - 在一个部分之后选择“下一步”时收集在表格中输入的信息
- mysql - 更快的 Laravel 迁移,用于测试具有大量表的项目
- azure-active-directory - 由于“角色”的名称,IsInRole 无法正常工作
- node.js - 如何在 middelware [Nest Fastify] 中获取/设置请求/响应标头?