MSAL Android 2.2.1调用acquireToken报错Missing required tokens of type: {0}
排查解决步骤
- 补充请求Scope:你当前仅请求了
openid和offline_access两个权限,Azure B2C场景下必须至少额外添加一个你在应用注册中暴露的自定义API权限(比如后端服务的访问权限),否则B2C不会返回合法的访问令牌,触发该报错。 - 检查用户流令牌配置:进入你使用的B2C用户流(如注册登录流)配置页,在「属性」-「令牌兼容性设置」中,确认已经勾选ID令牌和访问令牌两个选项,未勾选的情况下授权后不会返回对应令牌。
- 核对MSAL配置:检查assets目录下的
auth_config.json配置文件,确认租户ID、用户流名称、重定向URI均和Azure B2C门户配置完全一致,重定向URI格式需为msal{应用包名}://auth。 - 确认权限已授予管理员同意:进入应用注册的「API权限」页,确认你添加的所有权限都已点击「授予管理员同意」按钮,未授予的权限无法正常获取令牌。
- 调整请求代码示例:补充自定义Scope后的代码参考如下:
application.acquireToken(requireActivity(), arrayOf("openid", "offline_access", "https://你的租户名.onmicrosoft.com/你的API应用名/权限名"), object : AuthenticationCallback { // 原有回调逻辑 })
- 可选操作:如果以上配置全部正确仍报错,可以将MSAL升级到最新稳定版重试,2.2.1为较早版本存在已知的B2C适配问题。
内容的提问来源于stack exchange,提问作者AndroidDev
相关产品推荐
相关产品推荐

