阅读(3846) 赞(3)

百度智能小程序 获取用户设备标识

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);
        }
    });

    错误码

    Android

    错误码说明

    201

    解析失败,请检查调起协议是否合法

    1001

    执行失败

    10001

    内部错误

    10002

    网络无连接

    iOS

    错误码说明

    202

    解析失败,请检查参数是否正确

    10001

    内部错误

    10002

    网络无连接

    10004

    用户拒绝(user not login)

    10005

    系统拒绝