通过LinkedIn Conversions API提交线下转化时遇500内部服务器错误
排查LinkedIn转化API 500 Internal Server Error的步骤
500错误是服务器端异常,但多数时候和请求中的隐性格式、权限或数据问题相关,按以下步骤逐一验证:
1. 核心字段合法性校验
- 转化目标URN:确认
urn:lla:llaPartnerConversion:17327729是在LinkedIn平台已创建且你的应用有权访问的有效转化目标ID。 - 时间戳范围:
conversionHappenedAt是毫秒级时间戳,需确保其不早于转化目标创建时间,也不是未来时间。 - 事件ID唯一性:
eventId必须全局唯一,重复ID会导致服务器处理冲突。
2. 用户标识与信息格式检查
- SHA256哈希格式:
idValue的邮箱哈希需保证是小写、无空格的纯哈希值,可重新验证原始邮箱的哈希生成逻辑(需先将邮箱转为小写再哈希)。 - 用户信息匹配性:
countryCode用US但currencyCode是BRL,地区与货币不匹配可能触发隐性校验,若测试用户属于巴西,建议将countryCode改为BR。- 避免全用"Teste"这类重复占位文本,LinkedIn的反垃圾机制可能拦截此类测试数据。
3. 请求头与协议优化
- 移除冗余Cookie:Postman自动生成的
lidc、bcookie字段并非服务器端请求必需,建议删除,避免干扰身份验证流程。 - 简化JSON传递方式:用
requests.post的json参数直接传递字典,替代手动json.dumps,避免编码问题:# 优化后的请求代码片段 payload = { "conversion": "urn:lla:llaPartnerConversion:17327729", "conversionHappenedAt": 1713533960658, "conversionValue": {"currencyCode": "BRL", "amount": "1"}, "user": {"userIds": {"idType": "SHA256_EMAIL", "idValue": "c1bc7a0cacf53e2e55287e17d3ab606335d59e83f80c0bbea5ec26489d8fa5fd"}}, "eventId": "teste123-unique" } headers.pop('Cookie') # 移除Cookie字段 response = requests.post(url, headers=headers, json=payload) - API版本有效性:确认
LinkedIn-Version:202404是当前LinkedIn支持的有效版本,过期版本可能引发兼容性问题。
4. 权限与配额排查
- 验证Bearer令牌是否拥有
rw_ads或conversion_events相关权限,且令牌未过期。 - 检查API调用配额是否耗尽,LinkedIn API有频率限制,超出配额可能触发无明确提示的500错误。
5. 最简请求测试
- 先发送仅包含
conversion、conversionHappenedAt、user.userIds、eventId的最简请求,若成功再逐步添加conversionValue、userInfo等字段,定位触发错误的具体字段。 - 替换为真实测试数据:用实际哈希后的邮箱、合理的用户信息替代占位文本,避免被反垃圾机制拦截。
6. 获取详细错误信息
- 打印完整响应内容,部分500错误会返回包含具体错误细节的JSON体,比如:
{"message": "Internal server error", "status": 500, "errorDetails": ["Invalid user info format"]} - 使用LinkedIn开发者平台的API调试工具发送请求,平台会返回更明确的错误提示。
内容的提问来源于stack exchange,提问作者DataAnalytics_Rookie
相关产品推荐
相关产品推荐

