使用Windows App SDK实现Windows推送通知时遇Bad Request错误
纯C++ Win32应用实现Windows推送通知的令牌获取问题解决
1. 无效客户端ID(Bad Request)排查
- 核对Azure应用注册的客户端ID:确保复制时无多余空格、无字符遗漏,GUID格式需完全匹配。
- 确认令牌请求URL:正确端点为
https://login.microsoftonline.com/{tenant-id}/oauth2/v2.0/token(单租户替换{tenant-id},多租户可用common)。 - 校验请求参数:
grant_type必须设为client_credentialsclient_id填入Azure应用IDclient_secret填入创建的客户端密钥scope固定为https://notify.windows.com/.default
2. AADSTS500011错误(未找到资源主体)解决
错误源于Azure应用未关联Windows推送通知资源,需完成以下操作:
- 登录Azure门户,进入目标应用注册页面。
- 打开API权限,点击添加权限。
- 在我的组织使用的API中搜索
Windows Push Notification Service并选择。 - 添加
Access notification data(应用权限类型),并点击授予管理员同意(此步骤必须完成,否则令牌请求会失败)。 - 确保请求的
scope参数严格为https://notify.windows.com/.default,无拼写错误。
3. Win32应用推送通知额外注意事项
- 获取Channel URI时,调用针对桌面应用的
CreatePushNotificationChannelForApplication重载,正确处理回调获取URI。 - 发送推送时,请求目标为获取到的Channel URI,请求头需包含:
Authorization: Bearer {你的访问令牌}Content-Type: application/xml(或对应推送格式的类型)X-WNS-Type: wns/toast(可根据需求调整为wns/badge、wns/tile等)
内容的提问来源于stack exchange,提问作者Rohan Pande
相关产品推荐
相关产品推荐

