You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

开发模式应用中WhatsApp Business API永久令牌无法使用问题咨询

WhatsApp Business API永久令牌报错400问题排查

开发模式下的应用支持永久令牌,你的问题并非模式限制导致,大概率是永久令牌的权限、关联配置或生成流程有误,以下是具体排查步骤:

1. 核对永久令牌的权限与有效性

  • 临时令牌生成时会即时继承当前用户的权限,而永久令牌需要确保生成时明确勾选了whatsapp_business_messaging和whatsapp_business_management权限,且令牌与你的WhatsApp Business账户、应用处于绑定状态。
  • 可通过Meta Graph API调试工具验证:调用/debug_token端点,传入永久令牌,确认is_valid为true,且权限列表包含上述两个必填权限。

2. 验证Phone Number ID的正确性

  • 错误提示中的ID大概率是代码里的phone_number_id,需确认该ID属于当前应用绑定的WhatsApp Business账户,且号码状态为活跃。
  • 用可用的临时令牌调用/{business_account_id}/phone_numbers端点,获取账户下所有有效号码的ID,与代码中使用的phone_number_id对比是否一致。

3. 检查永久令牌的生成主体

  • 永久令牌必须通过系统用户生成,而非普通个人管理员账号的长期令牌(个人账号生成的所谓"永久"令牌可能因账号权限变更、会话失效等问题报错)。
  • 正确流程:在Meta商务管理平台创建系统用户,分配其WhatsApp Business账户和应用的全部管理权限,再通过该系统用户生成永久令牌。

4. 代码层面的细节排查

  • 确认代码中access_token变量确实赋值为永久令牌,未与临时令牌混淆(可打印令牌前几位对比差异,注意不要泄露完整令牌)。
  • 检查phone_number_id拼接是否正确,确保URL中没有多余字符或格式错误。
  • 代码小优化:将requests.post中的data=json.dumps(text_data)替换为json=text_data,requests会自动处理Content-Type头和JSON序列化,避免手动序列化可能出现的格式问题:
recipient_phone_number = rec.owner_id.partner_id.mobile

url = f"https://graph.facebook.com/v15.0/{phone_number_id}/messages"
headers = {
    "Authorization": f"Bearer {access_token}",
}
# Code for sending text message in whatsapp.
text_data = {
    'messaging_product': 'whatsapp',
    "recipient_type": "individual",
    'to': recipient_phone_number,
    'type': 'text',
    "text": {
        "preview_url": False,
        "body": "Dear %s, this message is to remind that document %s will expire on %s."
                % (rec.owner_id.name, rec.name, rec.expiry_date)
    }
}

text_response = requests.post(
    url,
    headers=headers,
    json=text_data  # 替换为json参数,简化序列化流程
)

内容的提问来源于stack exchange,提问作者Rob Kuttan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 18:45:29