«URL-адрес redirect_uri должен быть абсолютным» на Facebook PHP SDK

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>'; ?> 

Почему эта ошибка происходит?

Related of "«URL-адрес redirect_uri должен быть абсолютным» на Facebook PHP SDK"

Почему эта ошибка происходит?

Потому что вы 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/ приложения ).