由于公司有一个AppID与uni官方签了广告授权,所以现在要把App的AppID换成授权的那个AppID ,通过在线更新是可以做到更新,但是第一次更新完成后,一键登录时,获取到的UniAppID是新的 openid也是新的,旧是token是旧的,为什么是新的,因为我拿旧的AppID 和旧的openid去检验能得到正确的手机号,所以才知道token是旧的。
- 发布:2024-02-04 16:38
- 更新:2024-02-04 17:55
- 阅读:500
产品分类: uniapp/App
PC开发环境操作系统: Mac
PC开发环境操作系统版本号: macOS 12.6.3
HBuilderX类型: 正式
HBuilderX版本号: 4.0
手机系统: Android
手机系统版本号: Android 10
手机厂商: OPPO
手机机型: OPPO R17
页面类型: vue
vue版本: vue3
打包方式: 云端
项目创建方式: HBuilderX
操作步骤:
预期结果:
换了AppID,那么去调用uni.login时返回的openid和token希望都是新的,能够检验出正确的手机号
换了AppID,那么去调用uni.login时返回的openid和token希望都是新的,能够检验出正确的手机号
实际结果:
token是旧的
token是旧的
bug描述:
由于公司有一个AppID与uni官方签了广告授权,所以现在要把App的AppID换成授权的那个AppID ,通过在线更新是可以做到更新,但是第一次更新完成后,一键登录时,获取到的UniAppID是新的 openid也是新的,旧是token是旧的,为什么是新的,因为我拿旧的AppID 和旧的openid去检验能得到正确的手机号,所以才知道token是旧的。现在的问题是,换了AppID,那么去调用uni.login时返回的openid和token希望都是新的,能够检验出正确的手机号
喜欢技术的前端 - QQ---445849201
是整包更新吧,更新完之后重启下项目
platForm 获取平台
if(platForm == 'android'){
plus.runtime.quit();
}else if(platForm == 'ios'){
const threadClass = plus.ios.importClass("NSThread");
const mainThread = plus.ios.invoke(threadClass, "mainThread");
plus.ios.invoke(mainThread, "exit");
//上面的不行就用下面的
plus.ios.import("UIApplication").sharedApplication().performSelector("exit")
}
助赢 (作者)
app是有重启的,不是这个原因,现在已经找到原因了,是旧的Appid 启动时有调用 uni.preLogin 这里如果没有使用uni.login 那么预登录就会缓存10分钟,那问题来了,如果更新到新的AppID 那再调 uni.preLogin 是不会更新里面的信息的,所以第一次一键登录就会是旧的AppID 的token ,就算重启多次,在10分钟内没有调用uni.login那么就一直是旧的。所以这个应该是个推这个SDK有问题,如果需求是想做缓存,但是应该多一个可以清除上次的一个入口,这样就没问题了。希望官方可以改进
2024-02-05 14:17