WhatsApp嵌入式注册中兑换Access Code获取Access Token遇OAuth异常
问题分析与解决方案
错误提示明确指出授权码验证失败,原因是redirect_uri与OAuth请求时的不一致,这是OAuth2授权码流程中的常见问题,核心原因及解决步骤如下:
1. 后端兑换Token时缺少必填的redirect_uri参数
在调用oauth/access_token接口时,必须显式传入redirect_uri参数,且该值必须与前端发起授权(FB.login)时使用的redirect_uri完全一致。你的后端代码目前未包含该参数,这是导致错误的直接原因。
修改后端PHP代码:
$response = Http::get('https://graph.facebook.com/v18.0/oauth/access_token', [ 'client_id' => env('FACEBOOK_CLIENT_ID'), 'client_secret' => env('FACEBOOK_CLIENT_SECRET'), 'code' => $this->code, 'redirect_uri' => 'https://your-domain.com/your-auth-page', // 替换为发起FB.login的页面完整URL ]);
2. 确保redirect_uri完全匹配授权时的URL
- 前端通过JS SDK的
FB.login发起弹窗授权时,默认的redirect_uri是当前执行该函数的页面完整URL(包括协议http/https、域名、端口、路径,比如http://localhost:3000/whatsapp-signup) - 后端传入的
redirect_uri必须与该URL完全一致,不能有任何差异:- 注意协议(http/https)是否匹配
- 注意localhost的端口是否正确
- 注意路径末尾的斜杠、大小写是否一致
3. 检查Meta开发者后台的Redirect URI配置
进入Meta App Dashboard,按以下步骤操作:
- 导航至「产品」→「Facebook登录」→「设置」
- 在「Valid OAuth Redirect URIs」列表中,添加你使用的所有redirect_uri(包括本地测试的localhost地址和线上生产地址)
- 保存配置后,重新测试流程
4. 额外注意事项
- 若前端是单页应用(SPA),确保redirect_uri是发起授权的路由对应URL,而非根路径(除非授权操作在根页面执行)
- 避免在redirect_uri中包含动态参数(如随机字符串、用户ID等),否则每次授权请求的redirect_uri会不一致,导致验证失败
内容的提问来源于stack exchange,提问作者job vink
相关产品推荐
相关产品推荐

