调用Graph API时遇CompactToken解析错误80049217求助
解决CompactToken parsing failed with error code: 80049217错误
这个错误我之前帮不少开发者排查过,本质是你的Bearer Token在解析时不符合Graph API的要求,大概率是以下几个常见问题之一,你可以逐一排查:
检查Bearer Token的格式是否正确
必须严格遵循Bearer <你的Token>的格式,注意Bearer和后面的Token之间必须有一个空格,不能多也不能少。比如正确的请求头应该是:Authorization: Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6Ij...常见错误包括:少打空格写成
Bearer<token>、多打空格、或者Token前面有多余的换行/空白字符。确认Token是否是有效的Access Token
调用https://graph.microsoft.com/v1.0/me需要用Access Token,而不是ID Token。ID Token只能用来做身份验证,没有调用API的权限。你可以用JWT解析工具查看Token的payload:- 确认
token_type是Bearer - 确认
aud(受众)字段的值是https://graph.microsoft.com,如果受众不对,说明你获取Token时请求的端点或资源有误。
- 确认
检查Token是否完整且未过期
- 复制Token时有没有截断?Token是一串连续的长字符串,不能有换行、空格或者缺失字符。
- 查看Token的
exp(过期时间)字段,确认Token还在有效期内。如果过期了,需要重新获取新的Token。
验证Token的获取流程是否正确
确保你获取Token时使用的是正确的授权流程:- 如果是用户授权,要使用授权码流或隐式流,请求的
scope包含User.Read等Graph API的权限 - 如果是应用权限,要使用客户端凭证流,并且已在Azure AD中给应用分配了对应的Graph API权限
- 如果是用户授权,要使用授权码流或隐式流,请求的
如果排查完这些还是有问题,可以把你获取Token的请求参数(隐藏敏感信息)贴出来,我再帮你进一步分析。
内容的提问来源于stack exchange,提问作者shyamji
相关产品推荐
相关产品推荐

