EDIT: Я http://www.example.com
(например, являюсь моим живым сайтом) в качестве URL-адреса сайта в базовых настройках. У меня также есть www.example.com
и example.com
под доменами приложений .
Ошибка, которую я получаю:
URL-адрес 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>'; ?>
Почему эта ошибка происходит?
Почему эта ошибка происходит?
Потому что вы URL-кодирование URL-адреса, прежде чем передать его методу getLoginUrl
.
SDK позаботится об этом внутренне – так что теперь у вас есть URL-адрес, URL-код которого дважды , и это делает его неузнаваемым как действительный абсолютный URL-адрес.
Поэтому просто передайте URL-адрес этому методу без применения какой-либо дополнительной кодировки.
Изменить: Кроме того, метод getLoginUrl
ожидает два параметра – сначала URI перенаправления, а затем область как второй, а не как один массив.
$loginUrl = $helper->getLoginUrl( $redirectURI, array('ads_management', 'read_insights') );
Вам также нужно будет добавить URL-адрес перенаправления ( http://example.com/login-callback.php ) в качестве «Действительного URI перенаправления OAuth» в дополнительных настройках вашего приложения facebook ( https://developers.facebook.com/ приложения ).