swan.getSwanId
解释:由于宿主应用并不一定强制用户登录,因此用户也有可能处于未登录状态。此时开发者可能不希望通过实现登录强制用户登录,而是希望直接使用用户的设备标识来关联用户,存储一些非敏感的数据。因此智能小程序提供了一个swanid
的标识,开发者可将其视作用户的设备标识,swanid
的机制说明如下:
- 用户在同一台设备上使用同一个开发者所开发的不同智能小程序,得到的是相同的 swanid ;
- 用户在同一台设备上使用不同开发者所开发的不同智能小程序,得到的 swanid 是不同的。
开发者可通过swan.getSwanId()
方法:
- 获取 swanid ,swanid 长度不超过 100 个字符;
- 获取 swanid _signature ,并可通过对比该值与采用 signature 计算方法得到的计算值是否一致来判断 swanid 是否有效。
方法参数
Object object
object 参数说明
属性名 | 类型 | 必填 | 默认值 | 说明 |
---|---|---|---|---|
success | Function | 否 | 接口调用成功的回调函数 | |
fail | Function | 否 | 接口调用失败的回调函数 | |
complete | Function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
success 返回参数说明
参数 | 类型 | 说明 |
---|---|---|
errno | String | errno |
data | Object | {swanid} |
示例
扫码体验
代码示例
请使用百度APP扫码
图片示例
代码示例
- SWAN
- JS
<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);
}
});
signature 计算方法
- GOLANG
- PHP
/**
* 生成签名
* appkey 小程序标识
* secret_key 小程序私钥
* swanid 用户swanid
*/
func generageSignature(appKey, secrectKey, swanID string) string {
plainText := fmt.Sprintf("appkey=%ssecret_key=%sswanid=%s", appKey, secrectKey, swanID)
md5Sum := md5.Sum([]byte(plainText))
return hex.EncodeToString(md5Sum[:])
}
/**
* 生成 signature 校验码
* appKey 小程序标识
* secretKey 小程序私钥
* swanId 用于 swanId
*/
function generageSignature($appKey, $secrectKey, $swanId){
$plainText = sprintf("appkey=%ssecret_key=%sswanid=%s", $appKey, $secrectKey, $swanId);
return md5($plainText);
}
错误码
Android
错误码 | 说明 |
---|---|
201 | 解析失败,请检查调起协议是否合法 |
1001 | 执行失败 |
10001 | 内部错误 |
10002 | 网络无连接 |
iOS
错误码 | 说明 |
---|---|
202 | 解析失败,请检查参数是否正确 |
10001 | 内部错误 |
10002 | 网络无连接 |
10004 | 用户拒绝(user not login) |
10005 | 系统拒绝 |