将 Woocommerce REST API 与 WP-API 的 JWT 身份验证一起使用时,无法获得超过 12 个结果

Posted

技术标签:

【中文标题】将 Woocommerce REST API 与 WP-API 的 JWT 身份验证一起使用时,无法获得超过 12 个结果【英文标题】:Can't get more than 12 results when using Woocommerce REST API with JWT Authentication for WP-API 【发布时间】:2021-10-21 23:24:55 【问题描述】:

我正在开发一个 React Native 应用程序并将其连接到 WP Woocommerce 后端。

当我过去通过 OAuth 1.0 请求数据时,一切正常,但由于我使用插件“WP-API 的 JWT 身份验证”更改为 JWT 身份验证,所以当我请求所有产品时,我最多只能获得 12 个结果列出来。

我正在做的请求是不记名令牌,网址是 /wp-json/wc/v3/products?per_page=100

但是,我在“X-WP-Total 12” max 的标题上得到响应

知道如何解决这个问题,让我得到所有的骄傲吗??

【问题讨论】:

也许插件在查询中设置了限制。你应该检查一下。 我尝试在插件中查找文件,但在查询中找不到任何过滤器...不确定我是否在正确的位置... 【参考方案1】:

好的,感谢这篇帖子https://wordpress.org/support/topic/fix-basic-authentication-jwt_auth_bad_auth_header-error/

我必须打开文件:

wp-content/plugins/jwt-authentication-for-wp-rest-api/public/class-jwt-auth-public.php

在第 250 行,上面写着

    /*
     * The HTTP_AUTHORIZATION is present verify the format
     * if the format is wrong return the user.
     */
    list($token) = sscanf($auth, 'Bearer %s');
    if (!$token) 
        return new WP_Error(
            'jwt_auth_bad_auth_header',
            'Authorization header malformed.',
            array(
                'status' => 403,
            )
        );
    

将这些行替换为

if (!$token) 
        // Get token using basic auth
        list($username, $password) = explode( ':', base64_decode( substr( $auth, 6 ) ) );
        $request = new WP_REST_Request( 'POST', '/wp-json/jwt-auth/v1/token' );
        $request->set_param( 'username', $username );
        $request->set_param( 'password', $password );
        $JWT = new Jwt_Auth_Public('jwt-auth', '1.1.0');
        $token = $JWT->generate_token( $request );
        if (is_array($token) && isset($token['token'])) $token = $token['token'];
        return;
    

当我们在 GET 请求中添加后缀 ?per_page=100 之后,它就可以正常工作了。

【讨论】:

以上是关于将 Woocommerce REST API 与 WP-API 的 JWT 身份验证一起使用时,无法获得超过 12 个结果的主要内容,如果未能解决你的问题,请参考以下文章

将 Woocommerce REST API 与 WP-API 的 JWT 身份验证一起使用时,无法获得超过 12 个结果

在 WooCommerce Rest API 创建产品的那一刻修改产品

WooCommerce REST API v2:如何处理付款?

WooCommerce Rest Api Android 库问题(Woodroid)

如何在Woocommerce Rest API中获取Tokenization密钥?

WooCommerce REST API致命错误连接问题