1. Web Browser 使用SDK
1.1. 引入lovearth-xdua-browser-sdk
这里告诉你如何在浏览器,webview项目中引入xdua. 本SDK实用ES6语法,不兼容ES5语法.开发者需要自行转换到ES5.
使用npm安装lovearth-xdua-browser-sdk
npm install lovearth-xdua-browser-sdk --save
建议您使用9.0以上的npm
1.2. 开始使用 dua
在使用地球号之前,你必须初始化dua类。你只需要调用dua.initialize()一次即可完成初始化,在 代码一开始做这件事再适合不过了(如下面的代码),注意多次的调用初始化是无意义的。
const lovearth = require('lovearth-xdua-browser-sdk')
const dua = await lovearth({
APP_KEY: "您的appkey",
APP_SECRET: "您的appsecret",
})
地球号支持短信验证码和邮箱验证码两种验证码。
1.3. 验码管理
1.3.1. 短信验码
字段名 | 字段说明 | 字段举例 |
---|---|---|
tel | 用户电话 | +86-15810*011 |
api_name = "短信验码";
let res = await dua.addVfcodeByTel("+86-15810419011")
if(res.error == 0){
console.log(api_name+"成功");
}else{
console.log(api_name+"失败 "+res.reason);
}
用户收到的短信验证码的格式如下:
【地球号】尊敬的用户:您的校验码: 479711,工作人员不会索取,请勿泄露。
1.3.2. 邮箱验码
字段名 | 字段说明 | 字段举例 |
---|---|---|
用户电话 | example@email.com |
api_name = "邮箱验码";
let res = await dua.addVfcodeByMail("jiaoshuai@ict.ac.cn")
if(res.error == 0){
console.log(api_name+"成功");
}else{
console.log(api_name+"失败 "+res.reason);
}
1.4. 用户注册
支持三种种注册方式:电话,邮箱,户名。电话和邮箱注册需要验证码
1.4.1. 电话注册
字段名 | 字段说明 | 字段举例 |
---|---|---|
by | 注册方式 | tel |
tel | 用户电话 | +86-15810*011 |
pwd | 用户密码 | 对明文密码进行md5后的md5码 |
vfcode | 验证码 | 通过电话获取的短信验证码 |
ugrp | 户群号 | 通过管理员获取的户群id |
role | 角色名 | 通过管理员获取的角色名 |
api_name = "电话注册";
added_user_id = "anonymus";
let res = await dua.addUser({
by : "tel",
ustr: "+86-15810419021",
pwd : "a906449d5769fa7361d7ecc6aa3f6d28",
vfcode: "您通过邮箱或短信获取的6位验证码",
ugrp: "您的户群id",
role: "您要注册的用户在户群下的角色"
})
if(res.error == 0){
//注册成功不会返回任何用户信息,客户端也不能利用注册产生的信息。
console.log(api_name+"成功");
}else{
console.log(api_name+"失败 "+res.reason);
}
1.4.2. 邮箱注册
字段名 | 字段说明 | 字段举例 |
---|---|---|
用户邮箱 | example@email.com | |
pwd | 用户密码 | 对明文密码进行md5后的md5码 |
vfcode | 验证码 | 通过电话获取的短信验证码 |
ugrp | 户群号 | 通过管理员获取的户群id |
role | 角色名 | 通过管理员获取的角色名 |
api_name = "电话注册";
added_user_id = "anonymus";
let res = await dua.addUser({
by : "tel",
ustr: "+86-15810419021",
pwd : "a906449d5769fa7361d7ecc6aa3f6d28",
vfcode: "您通过邮箱或短信获取的6位验证码",
ugrp: "您的户群id",
role: "您要注册的用户在户群下的角色"
})
if(res.error == 0){
console.log(api_name+"成功");
}else{
console.log(api_name+"失败 "+res.reason);
}
1.4.3. 户名注册
字段名 | 字段说明 | 字段举例 |
---|---|---|
name | 用户名 | examplenickname |
pwd | 用户密码 | 对明文密码进行md5后的md5码 |
ugrp | 用户户群 | 注册时的初始户群 |
role | 用户户群 | 注册时的初始角色 |
//废弃,暂不支持
api_name = "户名注册";
let res = await dua.addUser({
by : "name",
ustr: "+86-15810419021",
pwd : "a906449d5769fa7361d7ecc6aa3f6d28",
vfcode: "vfcode",
ugrp: "您的户群id",
role: "您要注册的用户在户群下的角色"
})
if(res.error == 0){
console.log(api_name+"成功");
}else{
console.log(api_name+"失败 "+res.reason);
}
1.5. 密码管理
1.5.1. 修改密码
字段名 | 字段说明 | 字段举例 |
---|---|---|
user_id | 用户id | 8位数字字母大小写,通过登录接口获取 |
oldpass | 用户的旧密码 | 32位md5 |
newpass | 用户的新密码 | 32位md5 |
try {
let res = await dua.chgPass({
user_id:"4ivmegH1",
oldpwd:"a906449d5769fa7361d7ecc6aa3f6d28",
pwd:"a906449d5769fa7361d7ecc6aa3f6d28",
});
console.log("修改密码成功:");
} catch (e) {
console.log("修改密码失败:"+e);
}
1.5.2. 重置密码
字段名 | 字段说明 | 字段举例 |
---|---|---|
by | 重置方式 | tel/mail/incode |
ustr | 用户名称 | 邮箱/电话/昵称 |
vfcode | 验证码 | 使用用户绑定电话获取的短信验证码 |
pwd | 新的密码 | md5编码的密码 |
try {
let res = await dua.rstPass({
by:"tel",
ustr:"+86-15810419011",
vfcode:"FFFFFF",
pwd:"a906449d5769fa7361d7ecc6aa3f6d28"
});
console.log("重置密码成功:");
} catch (e) {
console.log("重置密码失败:"+e);
}
1.6. 用户管理
1.6.1. 用户登录
支持三种登录方式:电话,邮箱,姓名。邮箱依example@email.com格式,tel依+86-15810**1格式。
字段名 | 字段说明 | 字段举例 |
---|---|---|
by | 登录方式 | tel/mail/name 三种 |
ustr | 用户名 | 邮箱/电话/姓名 |
pwd | 用户密码 | 密码md5编码 |
ugrp | 用户户群 | 用户登录到哪个户群 |
role | 用户角色 | 用户以什么角色登录 |
let api_name = "用户登录";
await dua.initialize()
let res = await dua.login({
by : "tel",
ustr: '+86-15810419011',
pwd : 'a906449d5769fa7361d7ecc6aa3f6d28',
ugrp: "dua",
role: "none"
})
console.log(res);
if(res.error == 0){
console.log(api_name+"成功");
}else{
console.log(api_name+"失败:"+res.reason);
}
//返回的数据格式如下
{
status: 0,
result:{
token:'eyJhbGciOiJSUzI1NiIsImtpZCI6ImI1MGIxZWZmZGMwMzVlMjg2OWI2YzQ1ZjMzYmRmNWQ3In0.eyJpYXQiOjE1Mzc1MTEyMzEsIm5iZiI6MTUzNzUxMTIzMSwiZXhwIjoxNTM3NTE0ODMxLCJpc3MiOiJMb3ZlYXJ0aCBEVUEgU2VydmljZSIsImF1ZCI6IkxvdmVhcnRoIEluYyIsImR1YSI6IjNRMGZmWkFWIiwiZGlkIjoiaHRSdEtvQjQiLCJ1aWQiOiJEdDVtdnJ0VSIsImFpZCI6IjZyNnhDSHJXIn0.gLBbvukLNyRpXrVLIPyt8SGqgV9oMmiSZbUyEDC2zlhWSQ7_wCufocIZ_LlNG8CIDIo3FuvEwKxyhWBqztCNfN9kxIJrmXjA0Lkmx0nzRzsnyd26cEhdvv3a0LHli8SFfCqbmKquj9HchhFEhSXSVoD4MxpMvwm_jcCNgBQgPuneGICsDEfAuOy5TP2SsbPhaRDGg-YU6TB23P1NZzIaAzLoSY_2fZxk9bw_-g_Lcf_WCoeBz9F4u-hCnVzW-lWDNQCMK4RtY0TaOS3WyBT2BjsaWry726jMb4zOOQptIOBwlIlyMLk0x2erkRbhfa4rvHDIrDL1xVxY_RLCprfr3w',
user_id: 'Dt5mvrtU'
},
reason: 'Success',
debug: []
}
返回的数据格式
字段名 | 字段类型 | 字段说明 |
---|---|---|
user_id | String | 登录用户会获取user_id,格式:8位数字母串 |
token | String | 用户登录获取的权限token,SDK此时已经把它保存在浏览器本地了. |
1.6.2. 用户详情
api_name = "用户详情";
got_user_id = "4ivmegH1";
let res = await dua.getUser(got_user_id)
if(res.error == 0){
console.log(api_name+"成功 "+got_user_id);
}else{
console.log(api_name+"失败 "+res.reason);
}
//返回的数据格式
{
id: '4ivmegH1',
cstamp: '2016-09-10 11:17:53',
tel: '86015810419012',
name: 'dua:测试号1886034107',
avatar:'{"urls": [{"src": "http://xdua-files.oss-cn-qingdao.aliyuncs.com/Avatar/806212a8b28111abc5c1376d3c906e9f3.png", "url": "http://xdua-files.oss-cn-qingdao.aliyuncs.com/Avatar/806212a8b28111abc5c1376d3c906e9f3.png"}]}',
brief: '地球号第一号'
}
1.6.3. 用户删除
api_name = "用户删除";
let res = await dua.delUser(added_user_id)
if(res.error == 0){
console.log(api_name+"成功 ");
}else{
console.log(api_name+"失败 "+res.reason);
}
1.6.4. 修改用户
if(added_user_id == "anonymus"){
print("can not modify user:anonymus");
return false;
}
let res = await dua.putUser(user_id,{
name: "新名字",
avatar:"新的头像",
})
1.6.5. 查询用户
api_name = "用户查询";
let res = await dua.qryUser({})
if(res.error == 0){
console.log(api_name+"成功 "+got_user_id);
}else{
console.log(api_name+"失败 "+res.reason);
}
1.7. 户群管理
1.7.1. 创建户群
字段名 | 字段说明 | 字段举例 |
---|---|---|
code | 户群的代号 | my_ugrp_code |
name | 户群的名字 | 我的户群 |
brief | 户群的简介 | 我的户群简介 |
avatar | 户群的头像 | 我的头像地址 |
api_name = "创建户群";
got_ugrp_id = "";
let res = await dua.addUgrp({
code:"test_ugrp_rand",
name:"测试用户组",
brief:"测试用户组简介",
avatar:"测试用户组头像"
})
if(res.error == 0){
got_ugrp_id = res.result.id;
console.log(api_name+"成功 "+got_ugrp_id);
}else{
console.log(api_name+"失败 "+res.reason);
}
1.7.2. 删除户群
字段名 | 字段说明 | 字段举例 |
---|---|---|
ugrp_id | 户群的id | fbe261e0 |
api_name = "删除户群";
let res = await dua.delUgrp(got_ugrp_id)
if(res.error == 0){
console.log(api_name+"成功 "+got_ugrp_id);
}else{
console.log(api_name+"失败 "+res.reason);
}
1.7.3. 修改户群
字段名 | 字段说明 | 字段举例 |
---|---|---|
ugrp_id | 户群的id | fbe261e0 |
api_name = "修改户群";
let cur_ugrp_id = "fbe261e0";
let res = await dua.putUgrp(cur_ugrp_id,{name:"test_ugrp_set"})
if(res.error == 0){
console.log(api_name+"成功 "+cur_ugrp_id);
}else{
console.log(api_name+"失败 "+res.reason);
}
1.7.4. 查询户群
字段名 | 字段说明 | 字段举例 |
---|---|---|
ugrp_id | 户群的id | fbe261e0 |
api_name = "查询户群";
let res = await dua.qryUgrp({})
if(res.error == 0){
console.log(api_name+"成功 "+cur_ugrp_id);
}else{
console.log(api_name+"失败 "+res.reason);
}
1.7.5. 户群详情
字段名 | 字段说明 | 字段举例 |
---|---|---|
ugrp_id | 户群的id | fbe261e0 |
api_name = "户群详情";
cur_ugrp_id = "fbe261e0";
let res = await dua.getUgrp(cur_ugrp_id)
if(res.error == 0){
console.log(api_name+"成功 "+cur_ugrp_id);
}else{
console.log(api_name+"失败 "+res.reason);
}
1.8. 角色管理
1.8.1. 创建角色
字段名 | 字段说明 | 字段举例 |
---|---|---|
code | 角色的代号 | my_role_code |
name | 角色的名字 | 我的角色 |
ugrp | 角色的户群 | 我的角色简介 |
brief | 角色的简介 | 我的角色简介 |
avatar | 角色的头像 | 我的头像地址 |
granter | 授权角色 | 我的授权角色 |
api_name = "创建角色";
let role_id = "";
let res = await dua.addRole({
code:"test_role_rand",
name:"测试角色",
ugrp:"test_ugrp",
granter:"test_role2"
})
if(res.error == 0){
role_id = res.result.id;
console.log(api_name+"成功 "+cur_ugrp_id);
}else{
console.log(api_name+"失败 "+res.reason);
}
//返回的数据格式
1.8.2. 删除角色
字段名 | 字段说明 | 字段举例 |
---|---|---|
role_id | 角色的id | fbe261e0 |
api_name = "删除角色";
try {
let res = await dua.delRole(role_id);
if(res.error == 0){
console.log(api_name+"成功 ");
}else{
console.log(api_name+"失败 "+res.reason);
}
} catch (e) {
console.log(api_name+"例外 "+e);
}
1.8.3. 修改角色
字段名 | 字段说明 | 字段举例 |
---|---|---|
role_id | 角色的id | fbe261e0 |
api_name = "修改角色";
let res = await dua.putRole(role_id,{"name":"test_role_set"})
if(res.error == 0){
console.log(api_name+"成功 "+cur_ugrp_id);
}else{
console.log(api_name+"失败 "+res.reason);
}
1.8.4. 查询角色
字段名 | 字段说明 | 字段举例 |
---|---|---|
role_id | 角色的id | fbe261e0 |
api_name = "查询角色";
let res = await dua.qryRole({})
if(res.error == 0){
console.log(api_name+"成功 ");
}else{
console.log(api_name+"失败 "+res.reason);
}
1.8.5. 角色详情
字段名 | 字段说明 | 字段举例 |
---|---|---|
role_id | 角色的id | fbe261e0 |
api_name = "角色详情";
let res = await dua.getRole(role_id)
if(res.error == 0){
console.log(api_name+"成功 "+cur_ugrp_id);
}else{
console.log(api_name+"失败 "+res.reason);
}
1.9. 授权管理
1.9.1. 创建授权
字段名 | 字段说明 | 字段举例 |
---|---|---|
role | 授权的代号 | my_usro_code |
ugrp | 授权的名字 | 我的授权 |
towho | 授权的头像 | 我的头像地址 |
api_name = "创建授权";
usro_id = "";
let res = await dua.addUsro({
role:"test_role",
ugrp:"test_ugrp",
towho:"4ivmegH1"
})
usro_id = res.result.id;
if(res.error == 0){
console.log(api_name+"成功 ");
}else{
console.log(api_name+"失败 "+res.reason);
}
1.9.2. 删除授权
字段名 | 字段说明 | 字段举例 |
---|---|---|
usro_id | 授权的id | fbe261e0 |
api_name = "删除授权";
let res = await dua.delUsro(usro_id)
if(res.error == 0){
console.log(api_name+"成功 ");
}else{
console.log(api_name+"失败 "+res.reason);
}
1.9.3. 修改授权
字段名 | 字段说明 | 字段举例 |
---|---|---|
usro_id | 授权的id | fbe261e0 |
api_name = "修改授权";
let res = await dua.putUsro(usro_id,{name:"test_usro_set"})
if(res.error == 0){
console.log(api_name+"成功 ");
}else{
console.log(api_name+"失败 "+res.reason);
}
1.9.4. 查询授权
字段名 | 字段说明 | 字段举例 |
---|---|---|
usro_id | 授权的id | fbe261e0 |
api_name = "查询授权";
let res = await dua.qryUsro({})
if(res.error == 0){
console.log(api_name+"成功 ");
}else{
console.log(api_name+"失败 "+res.reason);
}
1.9.5. 授权详情
字段名 | 字段说明 | 字段举例 |
---|---|---|
usro_id | 授权的id | fbe261e0 |
api_name = "授权详情";
let res = await dua.getUsro(usro_id)
if(res.error == 0){
console.log(api_name+"成功 ");
}else{
console.log(api_name+"失败 "+res.reason);
}
1.10. 应用管理
1.10.1. 创建应用
字段名 | 字段说明 | 字段举例 |
---|---|---|
role | 应用的代号 | my_app_code |
ugrp | 应用的名字 | 我的应用 |
towho | 应用的头像 | 我的头像地址 |
api_name = "创建应用";
app_id = "";
let res = await dua.addApp({
pkg:"com.test.rand2"+(Math.random()*1000),
name:"测试应用",
ugrp:"test_ugrp",
brief:"测试简介",
avatar:"头像",
})
app_id = res.result.id;
if(res.error == 0){
console.log(api_name+"成功 ");
}else{
console.log(api_name+"失败 "+res.reason);
}
1.10.2. 删除应用
字段名 | 字段说明 | 字段举例 |
---|---|---|
app_id | 应用的id | fbe261e0 |
api_name = "删除应用";
let res = await dua.delApp(app_id)
if(res.error == 0){
console.log(api_name+"成功 ");
}else{
console.log(api_name+"失败 "+res.reason);
}
1.10.3. 修改应用
字段名 | 字段说明 | 字段举例 |
---|---|---|
app_id | 应用的id | fbe261e0 |
api_name = "修改应用";
let res = await dua.putApp(app_id,{name:"修改后的应用名字"})
if(res.error == 0){
console.log(api_name+"成功 ");
}else{
console.log(api_name+"失败 "+res.reason);
}
1.10.4. 查询应用
字段名 | 字段说明 | 字段举例 |
---|---|---|
app_id | 应用的id | fbe261e0 |
api_name = "查询应用";
let res = await dua.qryApp({})
if(res.error == 0){
console.log(api_name+"成功 ");
}else{
console.log(api_name+"失败 "+res.reason);
}
1.10.5. 应用详情
字段名 | 字段说明 | 字段举例 |
---|---|---|
app_id | 应用的id | fbe261e0 |
api_name = "应用详情";
let res = await dua.getApp(app_id)
if(res.error == 0){
console.log(api_name+"成功 ");
}else{
console.log(api_name+"失败 "+res.reason);
}