我正在尝试为我的基于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模式,我在这里做错了什么。任何帮助将不胜感激。
答案 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