阅读(3852)
赞(8)
百度智能小程序 获取用户设备标识
2020-08-27 11:46:49 更新
swan.getSwanId
此 API 已被废弃,请使用 button 组件实现相关功能。
解释:由于宿主应用并不一定强制用户登录,因此用户也有可能处于未登录状态。此时开发者可能不希望通过调用swan.login()
强制用户登录,而是希望直接使用用户的设备标识来关联用户,存储一些非敏感的数据。因此智能小程序提供了一个swanid
的标识,开发者可将其视作用户的设备标识,swanid
的机制说明如下:
- 用户在同一台设备上使用同一个开发者所开发的不同智能小程序,得到的是相同的 swanid 。
- 用户在同一台设备上使用不同开发者所开发的不同智能小程序,得到的 swanid 是不同的。
开发者可通过 swan.getSwanId() 方法:
- 获取 swanid ,swanid 长度不超过 100 个字符。
- 获取 swanid _signature ,并可通过对比该值与采用 signature 计算方法 得到的计算值是否一致来判断 swanid 是否有效。
方法参数
Object object
object参数说明
属性名 | 类型 | 必填 | 默认值 | 说明 |
---|---|---|---|---|
success |
Function |
否 |
接口调用成功的回调函数 |
|
fail |
Function |
否 |
接口调用失败的回调函数 |
|
complete |
Function |
否 |
接口调用结束的回调函数(调用成功、失败都会执行) |
参数 | 类型 | 说明 |
---|---|---|
errno |
String |
errno |
data |
Object |
{swanid} |
示例
图片示例
代码示例
<view class="wrap">
<view class="card-area">
<view class="list-area border-bottom" s-for="item in infoList">
<text class="list-item-key-4">{{item.key}}</text>
<text class="list-item-value">{{item.value}}</text>
</view>
<view class="button-group">
<button bind:tap="getSwanId" type="primary" hover-stop-propagation="true">点击获取用户设备标识</button>
<button bind:tap="clearSwanId" hover-stop-propagation="true">清空</button>
</view>
</view>
</view>
Page({
data: {
infoList: [{
key: 'swanid',
value: ''
}, {
key: 'swanid_old',
value: ''
}, {
key: 'swanid_old_signature',
value: ''
}, {
key: 'swanid_signature',
value: ''
}]
},
getSwanId(e) {
swan.getSwanId({
success: res => {
console.log('res', res.data);
// 更新数据
this.updateInfoList(res.data);
},
fail: err => {
swan.showToast({
title: '获取失败'
});
}
});
},
clearSwanId() {
this.updateInfoList({});
},
updateInfoList(res) {
let infoList = this.getData('infoList');
for (let i = 0; i < infoList.length; ++i) {
if (res[infoList[i].key] === '') {
infoList[i].value = '暂无';
}
else {
infoList[i].value = res[infoList[i].key];
}
}
this.setData('infoList', infoList);
}
});
Page({
data: {
infoList: [{
key: 'swanid',
value: ''
}, {
key: 'swanid_old',
value: ''
}, {
key: 'swanid_old_signature',
value: ''
}, {
key: 'swanid_signature',
value: ''
}]
},
getSwanId(e) {
swan.getSwanId({
success: res => {
console.log('res', res.data);
// 更新数据
this.updateInfoList(res.data);
},
fail: err => {
swan.showToast({
title: '获取失败'
});
}
});
},
clearSwanId() {
this.updateInfoList({});
},
updateInfoList(res) {
let infoList = this.getData('infoList');
for (let i = 0; i < infoList.length; ++i) {
if (res[infoList[i].key] === '') {
infoList[i].value = '暂无';
}
else {
infoList[i].value = res[infoList[i].key];
}
}
this.setData('infoList', infoList);
}
});
错误码
Android
错误码 | 说明 |
---|---|
201 | 解析失败,请检查调起协议是否合法 |
1001 | 执行失败 |
10001 | 内部错误 |
10002 | 网络无连接 |
iOS
错误码 | 说明 |
---|---|
202 | 解析失败,请检查参数是否正确 |
10001 | 内部错误 |
10002 | 网络无连接 |
10004 | 用户拒绝(user not login) |
10005 | 系统拒绝 |