关于token中的dev字段,如下场合是有用的,如果我们需要某个令牌只对某个uuid,某个mac地址有效,那么我们可以设置这个dev字段为"mac:fe567213464e". 令牌中dev字段的类型,dev字段的每项独立编码了一个设备唯一标志。这中令牌用在应用令牌,控制台里把dev字段写进token。然后分发给客户,客户必须调用SDK访问,调用SDK时,SDK会如实调用客户端的设备ID。

字段 举例 必须
mac mac:1234567890AB 设备唯一MAC地址
imei mac:1234567890AB 设备唯一MAC地址
imsi mac:1234567890AB 设备唯一MAC地址
android_id mac:1234567890AB 设备唯一MAC地址

[!alert] IMEI号(国际移动设备身份码)、IMSI号(国际移动设备识别码)这两个是有电话功能的移动设备才具有,也就是说某些没有电话功能的平板是获取不到IMEI和IMSI号的。且在某些设备上getDeviceId()会返回垃圾数据。

ANDROID_ID 是设备首次启动时由系统随机生成的一串64位的十六进制数字。

String ANDROID_ID = Settings.System.getString(getContentResolver(), Settings.System.ANDROID_ID);

缺点:

  • 设备刷机wipe数据或恢复出厂设置时ANDROID_ID值会被重置。
  • 现在网上已有修改设备ANDROID_ID值的APP应用。
  • 某些厂商定制的系统可能会导致不同的设备产生相同的ANDROID_ID。
  • 某些厂商定制的系统可能导致设备返回ANDROID_ID值为空。
  • CDMA设备,ANDROID_ID和DeviceId返回的值相同

序列号SerialNumber

从Android 2.3开始,通过android.os.Build.SERIAL方法可获取到一个序列号。没有电话功能的设备也都需要上给出此唯一的序列号。

String SerialNumber = android.os.Build.SERIAL;

缺点: 在某些设备上此方法会返回垃圾数据。

那如何能够完成"退出/登出/logout"时登录失效的功能呢?需要前端在退出时把token清掉。

results matching ""

    No results matching ""