将WordPress授权和Android登录整合

4
我正在尝试为WordPress网站构建本机Android应用程序。我正在使用WP REST API v2 (https://wordpress.org/plugins/rest-api/)来获取帖子和其他所需属性。我需要验证用户身份,因此我使用了JWT Authentication for WP REST API (https://wordpress.org/plugins/jwt-authentication-for-wp-rest-api/) API来生成和验证令牌,这方面工作良好。但是,当我尝试在标头中传递生成的令牌时,我一直收到以下错误。
{
    "code": "jwt_auth_bad_config",
    "message": "JWT is not configurated properly, please contact the admin",
    "data": {
        "status": 403
    }
}

有没有任何建议,是什么出了问题?请求帮助让这个东西运行起来。


我添加了这个插件,一切似乎都很好。我可以获取令牌。但REST请求仍然像以前一样没有任何授权限制。为什么它不能限制API呢? - Mahdi
1个回答

10

简要概述:将JWT_AUTH_SECRET_KEY的定义移动到您的wp-config.php文件顶部。

详细解决方案:

正如插件的安装文档中所述,JWT需要一个密钥来签署令牌,这个密钥必须是唯一的且永远不会被公开。

因此,您必须将此行添加到您的wp-config.php文件中。

define('JWT_AUTH_SECRET_KEY', 'your-top-secrect-key');

然而,文件中并没有说明您不应该将此放在文件末尾。将此行插入其他定义(AUTH_KEY、SECURE_AUTH_KEY、... NONCE_SALT)之后,403错误应该就会消失。

我猜这是因为JWT_AUTH_SECRET_KEY的定义必须在require_once(ABSPATH . 'wp-settings.php')之前完成。


我添加了这个插件,一切似乎都很好,我可以获取令牌并使用令牌进行请求,如果无效则会收到错误。但是,即使没有身份验证头,我也可以调用所有API,并且它们正常工作。为什么?为什么插件不限制所有请求? - Mahdi
这不是评论,而是另一个问题。您应该为此创建一个新问题。 - Orabîg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接