WhatsApp Cloud API无法获取媒体文件问题求助
WhatsApp Cloud API 获取音频文件返回HTML错误的排查方案
问题描述
查阅WhatsApp Cloud API媒体接口文档时,通过Postman和Curl测试均无法获取音频文件,反而收到显示“抱歉,出了点问题”的HTML错误响应。操作流程如下:
- 通过media ID请求获取media URL,此步骤正常完成;
- 使用返回的media URL并携带Auth header发起请求,得到如下错误响应:
<!DOCTYPE html><html lang="en" id="facebook"><head><title>Error</title><meta charset="utf-8" /><meta http-equiv="Cache-Control" content="no-cache" /><meta name="robots" content="noindex,nofollow" /><style nonce="wfWasHre">html, body { color: #333; font-family: 'Lucida Grande', 'Tahoma', 'Verdana', 'Arial', sans-serif; margin: 0; padding: 0; text-align: center;} #header { height: 30px; padding-bottom: 10px; padding-top: 10px; text-align: center;} #icon { width: 30px;} .core { margin: auto; padding: 1em 0; text-align: left; width: 904px;} h1 { font-size: 18px;} p { font-size: 13px;} .footer { border-top: 1px solid #ddd; color: #777; float: left; font-size: 11px; padding: 5px 8px 6px 0; width: 904px;}</style></head><body><div id="header"><a href="//www.facebook.com/"><img id="icon" src="//static.facebook.com/images/logos/facebook_2x.png" /></a></div><div class="core"><h1>Sorry, something went wrong.</h1><p>We're working on getting this fixed as soon as we can.</p><p><a id="back" href="//www.facebook.com/">Go Back</a></p><div class="footer"> Meta © 2022 · <a href="//www.facebook.com/help/?ref=href052">Help</a></div></div><script nonce="wfWasHre"> document.getElementById("back").onclick = function() { if (history.length > 1) { history.back(); return false; } }; </script></body></html><!-- @codegen-command : phps GenerateErrorPages --><!-- @generated SignedSource<<aa30090ace0190809cb1ff902c2ba23b>> -->
排查与解决步骤
- 检查Auth Header格式:请求media URL时,Auth header必须为
Authorization: Bearer <你的长期访问令牌>,注意Bearer与令牌间的空格不能遗漏。 - 确认Media URL有效期:通过API获取的media URL仅有效5分钟,超时后需重新调用接口获取新URL再发起请求。
- 验证请求方法:获取媒体文件必须使用GET请求,禁止使用POST或其他方法。
- 检查IP白名单:若服务器IP未加入Meta开发者后台的应用IP白名单,请求会被拦截,需添加正确IP。
- 确认文件权限:确保该media ID对应的文件属于你管理的WhatsApp号码,且未被删除。
- 避免浏览器直接访问:浏览器无法携带正确的Auth header,必须通过Postman、Curl或代码发起带header的GET请求。
正确请求示例(Curl)
curl -X GET "https://获取到的media-url" \ -H "Authorization: Bearer YOUR_LONG_LIVED_ACCESS_TOKEN"
内容的提问来源于stack exchange,提问作者Hakan LANA
相关产品推荐
相关产品推荐

