我在我的WordPress端点上使用wp-json-api插件,这需要我发送一个随机数令牌以及用户信息来注册新用户。要获得随机数令牌,我需要先发出GET请求,然后在获得令牌后,我可以发布用户数据进行注册。
以下是我创建的获取随机数令牌的函数:-
public getRegistrationNonce () {
let nonceurl = this.config.wordpressApiBaseUrl + '/api/get_nonce/?controller=user&method=register';
return this.http.get(nonceurl)
.map(result => {
return result.json();
});
}
我不确定如何将令牌数据返回到我的注册函数,该函数会发布注册所需的数据。
注册功能如下:-
public register(data) {
let token = this.getRegistrationNonce();
data.push({'nonce' :token});
let registrationurl = this.config.wordpressApiBaseUrl + '/api/user/register';
return this.http.post(registrationurl, data)
.map(result => {
return result.json();
});
}
请告诉我如何实现这一目标。
据我了解,您必须为这些功能创建一个服务。你可以全部授权。
在执行所有操作之前,请检查是否已安装 https://wordpress.org/plugins/json-api/因为您提到的插件依赖于它。然后,您可以在Wordpress中启用">用户"控制器->设置->JSON API。
然后让我们来谈谈您的离子应用程序身份验证服务它可能看起来像这样
import { Component } from '@angular/core';
import { Http } from '@angular/http';
import 'rxjs/add/operator/map';
@Injectable()
export class Auth {
token: any;
status: any;
constructor(public http: Http) {
}
}
然后添加函数。
import { Component } from '@angular/core';
import { Http } from '@angular/http';
import 'rxjs/add/operator/map';
@Injectable()
export class Auth {
token: any;
status: any;
constructor(public http: Http) {
}
getRegistrationNonce() {
let nonceurl = this.config.wordpressApiBaseUrl + '/api/get_nonce/?controller=user&method=register';
this.http.get(nonceurl)
.map(result =>
result.json();
)
.subscribe(data => {
this.token = data;
/** I have checked the returned data and it will be like
{
"status": "ok",
"controller": "user",
"method": "register",
"nonce": "531604a95d"
}
**/
});
}
register(data) {
this.getRegistrationNonce();
let registrationurl = this.config.wordpressApiBaseUrl + '/api/user/register';
this.http.get(registrationurl + '/?username=' + YOUR USERNAME + '&email=' + YOUR EMAIL + '&nonce=' + this.token.nonce + '&display_name='+YOURNAME+'¬ify=both')
//If your site doesn't have SSL/HTTPS you will have to add another parameter '&insecure=cool' at the end of the string
.map(result => {
result.json();
})
.subscribe(data => {
this.status = data;
/*
This will be in a format like,
{
"status": "ok",
"cookie": "a big string",
"user_id": 5
}
*/
});
}
}