调用Google Cloud Identity API的batchAdd接口返回302错误求助
解决调用FCM IID batchAdd接口返回302跳转登录页面的问题
你遇到的302跳转问题,核心是JWT令牌配置与目标API要求不匹配,加上冗余请求头干扰验证,具体修复点如下:
修正JWT受众(audience)
生成JWT时指定的audience是https://fcm.googleapis.com/,但实际请求的是IID接口(域名iid.googleapis.com),令牌的受众必须与请求的API域名完全匹配。将JWT的audience修改为https://iid.googleapis.com/。调整权限范围(scope)
当前使用的https://www.googleapis.com/auth/cloud-platform权限过于宽泛,建议替换为FCM消息专属权限https://www.googleapis.com/auth/firebase.messaging,既满足IID接口的权限要求,又避免权限冗余。移除冗余请求头
请求头中的access_token_auth=true并非官方要求的字段,直接移除该头,仅保留Authorization: Bearer <你的JWT令牌>和Content-Type: application/json即可。
修改后的JWT生成代码示例:
Jwt.issuer(serviceEmail) .scope("https://www.googleapis.com/auth/firebase.messaging") .subject(serviceEmail) .claim("kid", myConfig.fcmJwtKid()) .audience("https://iid.googleapis.com/") .issuedAt(Instant.now()) .expiresAt(Instant.now().plus(1, ChronoUnit.HOURS)) .sign("jwt-private-key.pem");
验证时可以解码生成的JWT,确认aud、scope、exp等字段是否符合上述要求,再重新发起请求即可解决302跳转问题。
内容的提问来源于stack exchange,提问作者Freak
相关产品推荐
相关产品推荐

