将 Wordpress 授权和登录与 Android 集成

Posted

技术标签:

【中文标题】将 Wordpress 授权和登录与 Android 集成【英文标题】:Integrating Wordpress Authorization and Sign in with Android 【发布时间】:2018-01-06 20:54:35 【问题描述】:

我正在尝试为 Wordpress 网站构建原生 android 应用程序。我正在使用 WP REST API v2 (https://wordpress.org/plugins/rest-api/) 来获取帖子和其他必需的属性。我需要对用户进行身份验证,为此我对 WP REST API (https://wordpress.org/plugins/jwt-authentication-for-wp-rest-api/) 使用了 JWT 身份验证 生成和验证令牌的 API 工作正常。但是,当我尝试在标头中传递生成的令牌时,我不断收到以下错误。


    "code": "jwt_auth_bad_config",
    "message": "JWT is not configurated properly, please contact the admin",
    "data": 
        "status": 403
    

关于出了什么问题有什么建议吗?请求帮助以运行此程序。

【问题讨论】:

我添加了这个插件,一切看起来都很好。我可以得到令牌。但是 REST 请求就像以前一样无需任何授权即可工作。为什么不能限制api? 【参考方案1】:

TL;DR; 将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,它们可以工作美好的。为什么?为什么插件不限制所有请求? 这不是评论,这是另一个问题。您应该为此创建一个新问题。

以上是关于将 Wordpress 授权和登录与 Android 集成的主要内容,如果未能解决你的问题,请参考以下文章

怎样确保WordPress登录是安全的

WordPress自定义用户登录函数wp_signon()

微信第三方登录与静默授权和非静默授权

集成wordpress和laravel登录

登录页面将我带到主页 Wordpress

成功登录后,Wordpress 管理员立即将我注销