使用Go官方FCM包给Android发推送时出现invalid-apns-credentials错误
问题:向Android发送FCM推送却收到APNS凭据错误
使用Go官方FCM包firebase.google.com/go/messaging向Android用户发送推送通知时,明明仅配置了Android相关参数,却收到了与APNS(iOS推送服务)相关的凭据错误。
代码片段
app, err := firebase.NewApp(ctx, nil, option.WithCredentialsJSON([]byte(credsJSON)), ) client, err := app.Messaging(ctx) // err 为 nil _, err = client.Send(&messaging.Message{ Token: "correct user device token", Android: &messaging.AndroidConfig{ Data: map[string]string{"some":"data"} } }) // 触发下方描述的错误
错误信息
http error status: 401; reason: apns certificate or auth key was invalid; code: invalid-apns-credentials; details: Request is missing required authentication credential
解决方案
- 验证设备令牌归属:确认传入的
Token确实是Android设备的FCM令牌,而非iOS设备的APNS令牌。FCM会根据令牌自动选择推送渠道,若令牌属于iOS,就会尝试调用APNS接口,进而触发凭据错误。 - 检查项目APNS配置:即使仅推送Android,若Firebase项目中配置了无效的APNS证书/密钥,FCM可能会默认加载这些配置。进入FCM控制台,移除或修正无效的APNS配置项。
- 显式禁用APNS渠道:在
messaging.Message中显式设置APNS: nil,强制FCM仅使用Android推送通道,避免触发APNS相关逻辑。修改后的代码示例:
_, err = client.Send(&messaging.Message{ Token: "correct user device token", Android: &messaging.AndroidConfig{ Data: map[string]string{"some":"data"} }, APNS: nil // 显式指定不使用APNS渠道 })
内容的提问来源于stack exchange,提问作者kAnton
相关产品推荐
相关产品推荐

