Bentley iModel开发Localhost授权SigninCallback错误排查咨询
Bentley iTwin 本地授权报错排查解决步骤
1. 报错栈src目录不存在的说明
你看到的@bentley相关依赖包路径下的src/目录不存在是正常现象:该路径是npm包编译发布前的原始源码路径,发布到npm仓库的是编译后的可执行代码,本地node_modules中默认不会保留源码目录,该路径不影响问题排查,不用纠结。
2. 核心授权报错排查步骤
你遇到的核心报错有两个,按优先级依次排查:
Unhandled Rejection (Error): SigninCallback error - failed to process signin request in callback using all known modes of token delivery: No state in response
The requested scope is invalid, unknown, malformed, or exceeds that which the client is permitted to request.
2.1 校验scope配置(优先级最高,报错已明确提示scope异常)
- 核对代码中配置的scope列表,必须和你在Bentley iTwin平台注册应用时申请开通的scope完全一致,常规必填scope为
openid、email、profile、imodelaccess:read、itwin-platform、offline_access,不要随意添加未申请的权限scope - 确认scope的分隔符为空格,不能使用逗号、分号等其他符号,错误示例:
imodelaccess:read,openid,正确示例:openid email profile imodelaccess:read itwin-platform offline_access - 确认你当前登录的Bentley账号拥有你申请的所有scope的权限,普通组织成员没有管理员额外授权的话,不要添加高级权限scope
2.2 校验重定向URI配置
no state in response报错大概率和重定向配置不匹配有关:
- 确认本地开发的localhost完整地址(包括端口、回调路径)已经完全一致添加到Bentley iTwin平台对应应用的「重定向URI」列表中,
http://localhost和http://127.0.0.1会被判定为不同地址,端口号、路径不能有任何差异 - 确认代码中配置的
redirectUri参数和平台填写的内容完全一致,大小写也不能有出入
2.3 校验浏览器存储权限
- 确认浏览器没有开启第三方Cookie拦截,OIDC流程的state参数会存在本地存储/Cookie中,拦截会导致回调时无法读取对应state值,触发报错
- 不要用无痕模式测试,无痕模式默认会开启严格的存储限制,容易导致授权流程异常
2.4 校验依赖版本兼容性
- 确认你安装的
@bentley/frontend-authorization-client、@bentley/imodeljs-frontend包的版本和你参考的教程版本匹配,大版本差异会导致授权逻辑不兼容,建议锁定和教程一致的版本号后删除node_modules重新安装依赖
内容的提问来源于stack exchange,提问作者Mark
相关产品推荐
相关产品推荐

