1. 创建令牌
接口功能:创建令牌(获取匿名令牌)
POST:http://api.xdua.com/auth
Content-Type:application/x-www-form-urlencoded
请求数据格式
字段名 | 字段位置 | 字段类型 | 字段说明 | 可选 |
---|---|---|---|---|
apiv | head | String | API接口版本号:默认1.0.0 | 可选 |
Authorization | head | string | 签名.参考签名生成方法 | 必选 |
dsn | body | string | 设备序列号 | 必须 |
type | body | string | android:android应用,ios:ios应用,browser:浏览器应用,pc:pc机的可执行文件exe或者standalone部署的应用 | 必须 |
model | body | string | 设备的模型 | 必须 |
man | body | string | 设备生产厂商 | 必选 |
os | body | String | 设备操作系统 | 必选 |
pkg | body | String | 应用包名 | 必选 |
channel | body | String | 渠道名 | 必选 |
BrowserSDK调用
const lovearth = require('../lib')
async function test_addToken() {
const dua = await lovearth({
APP_KEY: "您的appkey",
APP_SECRET: "您的appsecret",
})
//--------------------------------------------------
let api_name = "获取匿名令牌";
let res = await dua.addToken()
if(res.error == 0){
console.log(api_name+"成功 ");
}else{
got_ugrp_id = res.result.id;
console.log(api_name+"失败 "+res.reason);
}
token = res.result.token;
console.log(token);
api_name = "验证匿名令牌";
res = await dua.getToken(token)
if(res.error == 0){
console.log(api_name+"成功 ");
}else{
console.log(api_name+"失败 "+res.reason);
}
console.log(res);
}
test_addToken();
返回结果示例
获取匿名令牌成功
eyJhbGciOiJSUzI1NiIsImtpZCI6ImI1MGIxZWZmZGMwMzVlMjg2OWI2YzQ1ZjMzYmRmNWQ3In0.eyJpYXQiOjE1NTE4NDMyMTYsIm5iZiI6MTU1MTg0MzIxNiwiZXhwIjoxNTUxODQ2ODE2LCJpc3MiOiJsb3ZlYXJ0aCIsImR1YSI6IlBQamdPcjdMIiwiZGlkIjoiR1BwdmFPVEIiLCJ1aWQiOiJhbm9ueW11cyIsImFpZCI6ImFIRVZZaEUxIiwiYXVkIjoiaHR0cDovL2FkbWluLnhkdWEuY29tIiwiaXAiOiIxNTkuMjI2LjQzLjYyIiwidWEiOiJheGlvcy8wLjE4LjAiLCJ1Z3JwIjoiWGRVYVhkdUEiLCJyb2xlIjoibm9uZSJ9.dt4X_Ah1_PfZHIrVvGejUshTxbmk8tWtPBBITOIfAP-ViAQztxSfTUSjIgTNVm--5LN-MEelzRSwCo8-C7HzocT19WSLSjM1mXdRhJMvwOdIjxll-fMyP9Mpbe5cpTqywcqxiKF5UFWfOz7yHP63OK4sy4KMgus2jZfEs3zSMOgRGLG-5uXNmqQoy1Mx83pvmlEtdua35Z659HiiDoYmYAsrBstGbomXUOJG_GUUdGLKfLYeaXmgt8O95XTTzUpy6JTzBZMsKy-pgERHZjBQwnxra0fqUdPMN7S_6yvvv_6h1ltpJCI5fgZDUBmTXF6F8dLRc1yzxdw72nqc-oXlUw
验证匿名令牌成功
{
result:{
verified: 1,
data:{
uid: 'anonymus',
nbf: 1551843216,
iss: 'lovearth',
did: 'GPpvaOTB',
ugrp: 'XdUaXduA',
aid: 'aHEVYhE1',
iat: 1551843216,
ip: '159.226.43.62',
exp: 1551846816,
vtl: 3600,
aud: 'http://admin.xdua.com',
ua: 'axios/0.18.0',
role: 'none',
dua: 'PPjgOr7L'
}
},
error: 0,
reason: 'success'
}
返回数据格式
成功返回
成功返回的token在SDK就会被保存到localstorage.
{
"error": 0,
"reason": "Success"
"result": {"token":"从服务器返回的匿名令牌",}
}
失败返回
{
"error": 1,
"result": {},
"reason": "失败的时候是具体原因"
}
多种设备如何获取这些设备信息.
设备序号。用来唯一标识一台设备。在不同类型的应用终端获取dsn的方式不一样。
设备序号(dsn):
import android.os.Build;
import android.provider.Settings;
public String getUuid() {
return "android_id:"+Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID);
}
设备模型(model):
import android.os.Build;
public String getModel() {
return Build.MODEL;
}
应用包名(pkg):
public String getPackageName() {
return context.getPackageName();
}
制造商名(man):
import android.os.Build;
public String getManufacturer() {
return Build.MANUFACTURER;
}
操作系统(os):
应用版本(apv):
应用包名(pkg):
public String getPackageName() {
return context.getPackageName();
}
渠道名(channel):
要获取android应用发布的市场名
设备序号(dsn):
dsn = ""
设备模型(model):
参考:https://gitee.com/lovearthhome/www.xdua.org/blob/master/public/static/js/utiltool/detect/detect.js
应用包名(pkg):
在测试阶段,可以自己设置pkg
浏览器应用的包名就是网站的域名。如www.baidu.com便是百度应用的包名。
用 Javascript 可以单独获取当前域名、下面分别介绍。
一、js获取当前域名有2种方法
1、方法一
var domain = document.domain;
2、方法二
var domain = window.location.host;
3、注意问题
由于获取到的当前域名不包括 http://