Java Spring Boot调用Sharepoint Graph API返回CompactToken解析错误80049217
你遇到的CompactToken parsing failed with error code: 80049217错误几乎都是Authorization请求头格式不符合要求导致的,以下是具体排查和解决步骤:
- 问题1:未添加Bearer前缀
绝大多数该类报错都是因为调用下载接口时,直接传入了纯token字符串,没有在前面拼接Bearer前缀(注意末尾有一个半角空格)。正确的Header值格式为Bearer {你生成的Access Token字符串},你可以先检查调用getDownloadURL时传入的token参数是否符合该格式。 - 问题2:Token值携带多余字符
你从生成Token的接口返回Map中提取access_token字段时,可能意外带了前后引号、换行符、空格等多余内容。建议你在调用下载接口前打印完整的Authorization头值,和Postman中请求的Authorization头逐字符对比,确保完全一致。 - 问题3:Feign自动编码导致格式异常
Spring Cloud Feign默认会对Header中的特殊字符进行编码,比如Bearer后面的空格可能被转义为%20,导致Graph API无法识别。你可以通过以下方式排查解决:- 开启Feign的请求日志,确认实际发出的请求头是否符合预期,日志配置可以在application.yml中添加:
feign: client: config: sharepoint-graph: logger-level: full logging: level: 你的SharepointGraphFeignClient所在包路径: debug- 如果确认是编码问题,可以自定义Feign拦截器来设置Authorization头,避免@RequestHeader自动编码的问题,或者修改Feign的编码配置。
- 问题4:文件路径转义异常
如果你要下载的文件路径包含中文、空格、特殊符号,Feign的@PathVariable不会自动做URL编码,而Postman会自动处理,导致实际请求路径不正确,偶发也会关联触发401错误。你可以对比打印的实际请求URL和Postman的请求URL,确认路径是否完全一致,必要时手动对文件路径做URL编码后再传入。
内容的提问来源于stack exchange,提问作者Thomson Ignesious
相关产品推荐
相关产品推荐

