调用Google Wallet API遇header未设置问题,疑与认证相关
解决Google Wallet API 400 "header must be set"错误
这个错误不是认证问题,是你创建的GenericObject缺少必填的Header字段。Google Wallet的通用凭证(Generic Pass)要求必须配置Header部分,否则会返回invalidResource类型的400错误。
修复步骤
在你的GenericObject初始化代码中,添加Header字段,示例如下:
var genericObject = new GenericObject { Id = $"{_issuerId}.{Guid.NewGuid()}", ClassId = _passClass, State = "ACTIVE", // 添加必填的Header部分 Header = new GenericHeader { Label = new LocalizedString { DefaultValue = new TranslatedString { Language = "en-US", Value = "凭证标签" // 替换为你的Header标签文本 } }, Value = new LocalizedString { DefaultValue = new TranslatedString { Language = "en-US", Value = "凭证值" // 替换为你的Header值文本 } } }, HeroImage = new Image { SourceUri = new ImageUri { Uri = String.IsNullOrEmpty(request.ImageUrl) ? "https://storage.googleapis.com/wallet-lab-tools-codelab-artifacts-public/google-io-hero-demo-only.png" : request.ImageUrl } }, CardTitle = new LocalizedString { DefaultValue = new TranslatedString { Language = "en-US", Value = request.Title } }, Barcode = new Barcode { Type = "CODE_39", Value = request.BarcodeValue } };
关键说明
GenericHeader是GenericObject的必填字段,必须包含Label和Value两个子字段,两者都需要用LocalizedString和TranslatedString配置多语言(至少提供默认语言版本)。- 你之前怀疑认证有问题,但从错误信息和代码来看,认证流程是正常的——如果是认证失败,会返回401/403类错误,而非400的
invalidResource。
内容的提问来源于stack exchange,提问作者Matthew
相关产品推荐
相关产品推荐

