如果重定向URL具有代码参数

时间:2017-09-20 09:18:23

标签: facebook-php-sdk facebook-oauth

我正在尝试使用Facebook PHP SDK v5.6.1进行OAuth身份验证。 当浏览器返回重定向URL时,我无法交换访问令牌的授权代码。相反,我收到redirect_uri_mismatch错误:

Invalid redirect: https://.../ callback does not match one of the registered values.

(文字可能不准确,因为必须翻译)

我调试了Facebook SDK,发现此错误的原因是在请求URL上传回的code参数。通常,SDK会从PHP请求中推断出重定向URL,但是当我手动将重定向URL提供给没有code参数的SDK时,令牌交换成功。

我的目标是使用最少的代码更改从旧版本升级SDK,因此我希望尽可能避免手动提供重定向网址。

getAccessToken SDK方法中,SDK会注意从URL中删除state参数,但不会删除code参数,这显然需要删除。

Facebook Login的应用设置中,我关闭了严格模式。

我还应该做些什么才能使请求网址成为重定向网址? 必须关闭一些东西,因为我没有看到其他人对此有任何问题。

1 个答案:

答案 0 :(得分:0)

我仔细比较了不匹配的网址,发现其中一个是错误的。协议说https但它也指定了端口80。原来我的apache反向代理头文件配置错误。

RequestHeader set X-Forwarded-Proto 'https'
RequestHeader set X-Forwarded-Host 'hostname'
RequestHeader set X-Forwarded-Port '443'