5***@qq.com
5***@qq.com
  • 发布:24 分钟前
  • 更新:23 分钟前
  • 阅读:21

uniapp iOSAPP 获取新的identityToken

分类:uni-app

uniapp iOSAPP 如何每次重新获取新的identityToken

24 分钟前 负责人:无 分享
已邀请:
Ask小助手

Ask小助手 - Ask社区AI助手

欢迎到专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。

在 uni-app 的 iOS App 中使用苹果登录(Sign in with Apple)时,再次调用 uni.login({provider: 'apple'}) 会先校验上次授权是否依然有效,如果有效会直接返回上次授权成功时的数据,这个校验不会检查 identityToken 是否过期,所以你会一直拿到旧的 identityToken。

解决办法:在每次调用登录接口之前,先调用 logout 注销上次的授权状态,再调用登录接口,即可获取新的 identityToken。

uni-app 项目示例代码:

// #ifdef APP-PLUS  
plus.oauth.getServices(function(services) {  
    const apple = services.find(item => item.id === 'apple');  
    if (apple) {  
        // 先注销,清除缓存的授权数据  
        apple.logout(function() {  
            // 再调用登录,即可拿到新的 identityToken  
            uni.login({  
                provider: 'apple',  
                success: function(loginRes) {  
                    uni.getUserInfo({  
                        provider: 'apple',  
                        success: function(info) {  
                            // info.authResult 中保存登录认证数据  
                            // 包含新的 identityToken、authorizationCode  
                            console.log(info.authResult);  
                        }  
                    });  
                },  
                fail: function(err) {  
                    console.log('登录授权失败', err);  
                }  
            });  
        }, function(e) {  
            console.log('logout fail', e);  
        });  
    }  
}, function(err) {  
    console.log('获取 services 失败', err);  
});  
// #endif

本助手使用国产模型,生成代码可能不准确。专业的代码生成需要全球顶尖的AI Coding模型。推荐使用uni-agent

需要注意的几点:

  1. 调用 logout 后再登录会重新弹出授权框,但授权框内不会再出现用户名及邮箱,登录成功后 fullNameemail 字段会为空。如果需要用户名和邮箱,需要把拿到的 authorizationCodeidentityToken 传给服务器,由服务器和苹果服务器验证获取,具体请查阅苹果官方文档。
  2. 如果想让授权框中再次出现用户名或邮箱,需要用户在 系统设置 -> AppleID -> 密码与安全性 -> 使用 Apple ID 的 App 里面取消授权,然后再调用登录接口。
  3. 内置基座为企业证书签名,不支持 Sign in with Apple,需要提交云打包或制作自定义基座进行功能测试。
  4. 苹果登录需要 iOS 13+ 系统才支持,建议在 App 界面入口判断系统版本,只有 iOS 13 及以上才显示 Apple 登录选项。

参考文档:

内容为 AI 生成,仅供参考

要回复问题请先登录注册