iOS 12 Objective-C集成MSAL遇SSO请求序列化错误求助
问题
在iOS 12的Objective-C项目中集成MSAL时,已完成以下配置:
- 实例化
MSALAADAuthority,地址为https://login.microsoftonline.com/<< id here >> - 创建包含该Authority、客户端ID及应用深度链接redirectURI的
MSALPublicClientApplicationConfig - 构造包含所需权限范围的
MSALInteractiveTokenParameters
但调用acquireTokenWithParameters方法时,触发如下错误:
Error Domain=MSALErrorDomain Code=-50000 "(null)" UserInfo={MSALErrorDescriptionKey=Failed to serialize SSO request dictionary for interactive token request, MSALInternalErrorCodeKey=-42008, MSALCorrelationIDKey=...}
当前通过CocoaPods安装的MSAL版本为1.2.5,使用相同端点配置的Swift示例可正常运行,请问该错误的原因是什么?
原因分析及解决建议
- MSAL版本的Objective-C兼容性bug:你使用的1.2.5版本存在Objective-C环境下SSO请求字典序列化的已知问题,而Swift示例不受影响是因为该版本对Swift的适配更完善。后续版本(如你提到的1.2.18)已修复此问题,优先建议升级MSAL版本到最新稳定版。
- 参数类型不兼容:检查
MSALInteractiveTokenParameters的初始化参数,确保所有传入对象为纯Objective-C类型。例如权限范围数组需使用NSArray<NSString *> *,避免混入Swift类型导致序列化失败。 - redirectURI配置问题:确认redirectURI完全匹配Azure AD后台配置的深度链接,且代码中以
NSString类型传入,无编码错误或格式不规范的情况。
内容的提问来源于stack exchange,提问作者pkr2000
相关产品推荐
相关产品推荐

