WhatsApp集成问题:获取access_token时redirect_uri不匹配报错
解决WhatsApp嵌入式注册获取access_token时的redirect_uri不匹配问题
问题根源
OAuth授权流程的核心规则是:获取授权码(code)时使用的redirect_uri必须和兑换access_token时的完全一致,哪怕参数顺序、大小写、末尾斜杠这类细微差异都会触发Error validating verification code错误。你用Facebook集成助手测试时,系统自动使用的是平台内部回调地址,和你实际业务场景的需求不匹配,这是问题的核心。
修复步骤
配置正确的重定向URI
进入Facebook开发者后台,找到你的应用:- 进入「产品」→「WhatsApp」→「嵌入式注册」,设置
Redirect URI为你的业务系统回调地址(比如https://your-domain.com/whatsapp/callback)。 - 同时在「设置」→「基本」里确认隐私政策URL已配置,再到「OAuth设置」→「有效的OAuth重定向URI」中添加相同的回调地址(必须精确匹配协议、域名、路径,测试环境的localhost地址也要按格式添加)。
- 进入「产品」→「WhatsApp」→「嵌入式注册」,设置
发起授权时指定统一的redirect_uri
在你自己的业务页面触发WhatsApp嵌入式注册流程时,必须在授权请求中明确传入redirect_uri参数,值就是你刚配置的业务回调地址。比如调用嵌入式注册JS SDK时,确保参数包含redirect_uri: "https://your-domain.com/whatsapp/callback"。
注意:集成助手的演示流程用的是Facebook内部回调,不能直接复用那个地址到你的业务代码里。兑换access_token时严格复用相同地址
当你的回调地址收到用户授权返回的code后,调用/oauth/access_token接口时,必须使用和发起授权时完全相同的redirect_uri,不能添加额外参数或修改格式。排查细节问题
- 检查大小写:
HTTPS和https、Callback和callback会被视为不同地址。 - 检查末尾斜杠:
https://your-domain.com/callback/和https://your-domain.com/callback是不同的。 - 确认
code有效性:code是一次性且有10分钟有效期,重复使用或过期也会报错,但你的错误提示明确指向redirect_uri,优先排查前者。
- 检查大小写:
正确请求示例
curl -X POST \ 'https://graph.facebook.com/v21.0/oauth/access_token' \ -H 'Content-Type: application/json' \ -d '{ "client_id": "你的应用ID", "client_secret": "你的应用密钥", "code": "用户授权后返回的code", "grant_type": "authorization_code", "redirect_uri": "https://your-domain.com/whatsapp/callback" }'
内容的提问来源于stack exchange,提问作者Boris Valo
相关产品推荐
相关产品推荐

