如何使用4.7中的新JSON API创建用户?

时间:2017-04-21 作者:n8bar

我以前在4.7之前使用过JSON API和JSON用户API插件,我在ReST API用户参考中看到了文档,https://developer.wordpress.org/rest-api/reference/users/#create-a-user%20%22ReST%20API%20reference 但我不知道如何开始。我肯定有一个身份验证过程必须首先发生才能获得nonce,但我也不知道如何再这样做。如果有人能给我看一些cURL语句和URI的例子,我会非常感激,因为它们既可以获取nonce,也可以创建用户。

TIA公司

2 个回复
最合适的回答,由SO网友:Otto 整理而成

WordPress中包含的RESTAPI实际上没有内置身份验证。

如果您通过登录在WordPress中进行正常身份验证,那么您的浏览器将收到一组cookie。如果您将这些cookie与您的请求一起发送,那么这将验证您是否可以执行所讨论的操作。

如果需要为外部服务添加身份验证,那么需要安装一个插件来处理它。有以下几种:

如果您只是在本地测试,还有一个基本的身份验证插件,允许您在授权标头中的每个请求中简单地发送用户名和密码:

在任何情况下,一旦您获得了正确的cookie或启用了身份验证方法,那么创建新用户就很简单了。向/wp-json/wp/v2/用户发送POST请求,并将用户名、电子邮件和密码作为有效负载。

您可以在此处找到记录:

https://developer.wordpress.org/rest-api/using-the-rest-api/

https://developer.wordpress.org/rest-api/using-the-rest-api/authentication/

SO网友:Yohanim

为了“注册用户”或“检索密码”,需要对具有“管理员”角色的用户进行身份验证。虽然出于安全原因,这是一项精心设计的工作,但这种实现使得前端应用程序很难实现简单的“注册”或“注册”功能。

简单的解决方案是wp-rest-user 插件。这个插件通过扩展现有的WordPress REST API端点来完全满足这种需求。

USAGE

向发送POST请求/wp-json/wp/v2/users/register, 包括一个带有三个键的JSON主体:用户名、电子邮件和密码。

向发送POST请求/wp-json/wp/v2/users/lostpassword, 包括一个带有三个键的JSON主体:user\\u login。

你可以用邮递员来做下面的图片enter image description here

或者甚至ajax请求,请参见下面的代码

<script>
    function addUserData(){
            $.ajax( {
            url: \'http://localhost/lapaktrip/wp-json/wp/v2/users/register\',
            method: \'POST\', 
            contentType: "application/json; charset=utf-8",  
            dataType: "json", 
            data:JSON.stringify({
                \'username\' : \'testmember\',
                \'email\' : \'[email protected]\',
                \'password\' : \'123456\'
            })
        } ).done( function ( response ) {
            console.log( response );
        } )
    }           
</script>
<button onclick="addUserData()">Start Sending</button>
希望这个答案能帮助很多人。祝您编码愉快。

相关推荐

使用外部JSON查询重写URL

我编写了一个插件,可以从外部JSON源获取数据,并在列表中显示一些细节。可以单击每个项目以显示特定模板上的更多详细信息。为此,每个项目都有自己的URL,如下所示:http://localhost/details/?id=125借助query\\u vars,get参数旨在从JSON源中检索更多数据。它工作顺利,但我希望URL可以这样重写:http://localhost/details/name-of-the-item/id这可能吗?我该怎么做?(如果需要,我可以从列表页传递尽可能多的get参数)