uni-app 一键登录问题:从一个AppID通过在线更新到新AppID后,首次登录获取的token是旧的
uni-app 一键登录问题:从一个AppID通过在线更新到新AppID后,首次登录获取的token是旧的
类别 | 信息 |
---|---|
产品分类 | 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希望都是新的,能够检验出正确的手机号
更多关于uni-app 一键登录问题:从一个AppID通过在线更新到新AppID后,首次登录获取的token是旧的的实战教程也可以访问 https://www.itying.com/category-93-b0.html
是整包更新吧,更新完之后重启下项目
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")
}
更多关于uni-app 一键登录问题:从一个AppID通过在线更新到新AppID后,首次登录获取的token是旧的的实战教程也可以访问 https://www.itying.com/category-93-b0.html
app是有重启的,不是这个原因,现在已经找到原因了,是旧的Appid 启动时有调用 uni.preLogin 这里如果没有使用uni.login 那么预登录就会缓存10分钟,那问题来了,如果更新到新的AppID 那再调 uni.preLogin 是不会更新里面的信息的,所以第一次一键登录就会是旧的AppID 的token ,就算重启多次,在10分钟内没有调用uni.login那么就一直是旧的。所以这个应该是个推这个SDK有问题,如果需求是想做缓存,但是应该多一个可以清除上次的一个入口,这样就没问题了。希望官方可以改进
在 uni-app 中,如果你从一个 AppID 通过在线更新到新的 AppID 后,首次登录获取的 token 仍然是旧的,可能是由于以下几个原因导致的:
1. 缓存问题
- 原因: 旧 AppID 的 token 可能被缓存了,导致首次登录时仍然使用旧的 token。
- 解决方案: 清除缓存或者强制刷新 token。可以在更新 AppID 后,手动调用清除缓存的接口,或者在代码中强制刷新 token。
// 清除缓存示例
uni.clearStorageSync();
2. AppID 更新未生效
- 原因: 更新 AppID 后,可能由于某些原因,新的 AppID 未生效。
- 解决方案: 确保 AppID 已经成功更新,并且重新编译和运行应用。可以检查
manifest.json
文件中的 AppID 是否正确。
{
"appid": "新AppID",
"name": "YourApp"
}
3. 服务器端未同步
- 原因: 服务器端可能仍然在使用旧的 AppID 进行验证,导致返回旧的 token。
- 解决方案: 确保服务器端已经同步更新了新的 AppID,并且能够正确处理新 AppID 的请求。
4. 客户端未重新登录
- 原因: 客户端在更新 AppID 后,可能未重新登录,导致仍然使用旧的 token。
- 解决方案: 在更新 AppID 后,强制用户重新登录,以确保获取到新的 token。
// 强制用户重新登录示例
uni.reLaunch({
url: '/pages/login/login'
});