编辑:我在基本设置下将http://www.example.com
(例如我的实际网站)作为网站网址。我在应用域名下也有www.example.com
和example.com
。
我得到的错误是:
redirect_uri网址必须是绝对的
我尝试登录时代码中断了。这是getLoginUrl()
的代码:
<?php
$fb = new Facebook\Facebook([
'app_id' => 'MYAPPID',
'app_secret' => 'MYAPPSECRET',
'default_graph_version' => 'v2.5',
]);
$redirectURI = 'http://example.com/login-callback.php';
$encodedRedirectURI = urlencode($redirectURI);
$helper = $fb->getRedirectLoginHelper();
$loginUrl = $helper->getLoginUrl(
array(
'scope' => 'ads_management,read_insights',
'redirect_uri' => $encodedRedirectURI
)
);
echo '<a href="' . $loginUrl . '">Log in with Facebook!</a>';
?>
为什么会发生这种错误?
答案 0 :(得分:0)
您还需要在Facebook应用(http://example.com/login-callback.php)的高级设置中将重定向网址https://developers.facebook.com/apps)添加为“有效的OAuth重定向URI”。
答案 1 :(得分:0)
为什么会发生这种错误?
因为您在对URL进行URL编码之前将其传递给getLoginUrl
方法。
SDK在内部处理这个问题 - 所以现在你有一个URL已经被网址编码两次,这使得它无法识别为有效的绝对URL。
所以只需将URL传递给该方法,而不用应用任何额外的编码。
编辑:此外,方法getLoginUrl
需要两个参数 - 首先是重定向URI,然后是作为第二个的范围 - 而不是一个阵列。
$loginUrl = $helper->getLoginUrl(
$redirectURI,
array('ads_management', 'read_insights')
);