FB登录严格模式无效

时间:2018-01-30 18:31:11

标签: php facebook facebook-graph-api facebook-login

我正在尝试为我的基于PHP的网站注册FB选项。我的网站回调网址是

http://subdomain.mydomain.com/user/fblogincb/

我在我的Apps Facebook登录设置中的有效OAuth重定向URI中添加了该功能。我网站的登录按钮正确调用了回调网址,但是当我尝试使用以下代码在我的回调页面中使用访问令牌时:

$helper = $fb->getRedirectLoginHelper();

try {
    $accessToken = $helper->getAccessToken();
} catch(Facebook\Exceptions\FacebookResponseException $e) {
      // When Graph returns an error
    echo 'Graph returned an error: ' . $e->getMessage();
    exit;
} 

它返回异常:

  

图表返回错误:无法加载网址:此网址的域未包含在应用的域中。要加载此网址,请将应用的所有域和子域添加到应用设置中的应用域名字段。

来自FB的重定向网址为:

http://subdomain.mydomain.com/user/fblogincb/?code=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

但是,关闭严格网址模式不会出现此问题。对于Strict URL模式,我在这里做错了什么。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

尝试并将登录对话框调用中使用的确切重定向URL作为getAccessToken方法的参数传递:

$accessToken = $helper->getAccessToken('http://subdomain.mydomain.com/user/fblogincb/');

完全相同的 redirect_uri参数值必须在调用登录对话框和后续API调用中传递,以便交换令牌的代码。 SDK有自己的“URL检测处理程序”(或者您可以在自定义路由逻辑可能需要的环境中提供)以确定当前URL - 通常可以正常工作,但取决于确切的设置,它有时会失败。

我对错误消息感到有些惊讶,我记得在这种情况下看到了另一个明确提到redirect_uri不匹配的情况......但是在实现严格模式时可能会在内部发生变化,dunno。

答案 1 :(得分:0)

不要忘记将Facebook PHP SDK更新到最新的v5.6.2,从Facebook code回调中删除redirect_uri个参数

Facebook SDK for PHP - changelog

  • 5.6.2(2018-02-15)
    • 剥离'代码'参数(#913)
相关问题