使用Facebook JS SDK交换授权码时的OAuth重定向URI验证问题
严格匹配前端页面URL作为redirect_uri
使用Facebook JS SDK的FB.login()获取code时,SDK会自动将发起登录请求的前端页面完整URL作为默认的redirect_uri,手动指定的redirect_uri会被忽略。后端调用oauth/access_token接口时,必须传入这个精确的URL——包括协议(http/https)、域名、端口、路径,大小写也要完全一致,不能替换成其他配置的URI。检查Valid OAuth Redirect URIs配置
将上述前端页面的完整URL精确添加到Facebook应用后台的Valid OAuth Redirect URIs列表中,不能有多余斜杠、缺失路径或大小写错误。如果开启了Strict Mode for Redirect URIs,必须保证URI完全匹配,不支持模糊匹配(子域名通配符需符合Facebook规则)。验证核心请求参数
后端调用接口时,确认client_id(应用APP ID)、client_secret(应用APP密钥)、code(前端获取的授权码)这三个参数无错误,尤其是client_secret不要填错或泄露。确保授权码未过期
Facebook授权码有效期仅约10分钟,获取到code后需立即调用后端接口换取token,避免因授权码过期导致验证失败。排查本地开发环境问题
若为本地开发,需将http://localhost:xxx(xxx为实际端口)添加到Valid OAuth Redirect URIs列表,确保URI与前端页面地址完全一致。
内容的提问来源于stack exchange,提问作者user5252279

