Pusher通知客户端无法识别userId token的报错问题求助
这个错误是Pusher Beams的客户端SDK在调用你配置的认证接口拿用户token时,没能从接口返回结果里取到有效值的token导致的,你可以按以下步骤排查:
- 第一步:校验认证接口的返回结构
打开浏览器开发者工具的「网络」面板,刷新页面复现问题,找到发往/Account/BeamsAuth/的请求:- 先确认请求状态码为200,若为4xx/5xx,优先排查服务端接口的权限、代码报错问题
- 再看响应体结构,Beams默认要求接口直接返回
{"token": "<实际JWT内容>"}的根结构,如果你服务端返回的格式是带外层包装的(比如{"code":200,"data":{"token":"xxx"}}),SDK直接读根节点的token就会读到null,触发报错。
- 第二步:适配自定义返回结构(如果需要)
如果你不想修改服务端的统一返回格式,可以给TokenProvider添加自定义响应解析逻辑,示例如下:const beamsTokenProvider = new PusherPushNotifications.TokenProvider({ url: "/Account/BeamsAuth/", tokenResponseParser: async (response) => { const res = await response.json() // 按你实际的返回层级取token即可 return res.data.token } }); - 第三步:校验userId有效性与服务端token生成逻辑
- 确认前端渲染后的
currentUserId不为空,你用的Razor语法@User.Identity.GetUserId()要确保用户处于登录状态才会返回有效值,未登录时为空会导致服务端生成token失败 - 确认服务端生成Beams token时用的实例ID、密钥和前端配置的一致,且传入的userId和前端传的参数完全匹配。
- 确认前端渲染后的
内容的提问来源于stack exchange,提问作者ajavad
相关产品推荐
相关产品推荐

