助赢
助赢
  • 发布:2024-02-04 16:38
  • 更新:2024-02-04 17:55
  • 阅读:500

【报Bug】uni.login App 从一个AppID 通过在线更新到新 AppID 更新完成,第一次一键登录拿到的 token 是旧的

分类:uni-app

产品分类: 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官方签了广告授权,所以现在要把App的AppID换成授权的那个AppID ,通过在线更新是可以做到更新,但是第一次更新完成后,一键登录时,获取到的UniAppID是新的 openid也是新的,旧是token是旧的,为什么是新的,因为我拿旧的AppID 和旧的openid去检验能得到正确的手机号,所以才知道token是旧的。

预期结果:

换了AppID,那么去调用uni.login时返回的openid和token希望都是新的,能够检验出正确的手机号

实际结果:

token是旧的

bug描述:

由于公司有一个AppID与uni官方签了广告授权,所以现在要把App的AppID换成授权的那个AppID ,通过在线更新是可以做到更新,但是第一次更新完成后,一键登录时,获取到的UniAppID是新的 openid也是新的,旧是token是旧的,为什么是新的,因为我拿旧的AppID 和旧的openid去检验能得到正确的手机号,所以才知道token是旧的。现在的问题是,换了AppID,那么去调用uni.login时返回的openid和token希望都是新的,能够检验出正确的手机号

2024-02-04 16:38 负责人:无 分享
已邀请:
喜欢技术的前端

喜欢技术的前端 - 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

要回复问题请先登录注册