Facebook PHP SDK: как автоматически отобразить диалог входа? - PullRequest
2 голосов
/ 16 декабря 2011

Мой код не может отобразить диалоговое окно с разрешениями, когда пользователь подключается к моему приложению Facebook.Вместо страницы входа в систему я получил сообщение об ошибке 404.

Мой код:

require 'src/facebook.php';
require './config.php';

$facebook = new Facebook(array(
  'appId'  => $fb_app_id,
  'secret' => $fb_secret,
  'cookie' => true,
));

$userData = null;
$user = $facebook->getUser();

if ($user) {
    try {
        $userData = $facebook->api('/me');
    } catch (FacebookApiException $e) {
        error_log($e);
        $user = null;
    }
} else {
    $loginUrl = $facebook->getLoginUrl(array(
    'scope' => 'publish_stream',
));
}


    <div id="loginWrapper">
<?php if ($user): ?>
      <a href="<?php echo $logoutUrl; ?>">Logout</a>
        <?php else: ?>
        <a href="<?php echo $loginUrl; ?>">Login with Facebook</a>
    <?php endif ?>
    </div>

Я также попытался указать персонализированный URL-адрес (как показано ниже), и я получил те же 404ошибка.

$loginUrl = "http://www.facebook.com/dialog/oauth?client_id=".$fb_app_id."&redirect_uri=".$fb_app_url."&scope=publish_stream";

ОБНОВЛЕНИЕ 1:

В противном случае, когда я пытаюсь войти в систему напрямую через сервер (с http://mydomain/application/index.php), я получил перенаправление на Facebookвеб-сайт по URL-адресу ниже и получил это сообщение об ошибке:

https://www.facebook.com/dialog/oauth?client_id=xxxxxxxxxxxxxx&redirect_uri=http://apps.facebook.com/myapplication&state=f8cd945d8a9aefcd0b439fecd8515a68&canvas=1&fbconnect=0&scope=publish_stream

http://img851.imageshack.us/img851/661/screenshot20111216at151.png

ОБНОВЛЕНИЕ 2:

Вот моя конфигурация приложения:

И сообщение, которое я получаю, когда пытаюсь получить доступ напрямую по ссылке приложения: apps.facebook.com/myapplication/ без регистрации

http://img854.imageshack.us/img854/7721/screenshot20111216at173.png

Буду признателенлюбая помощь.

Ответы [ 2 ]

0 голосов
/ 16 декабря 2011

По поводу обновления вашего сообщения: Перейдите в Приложение для разработчиков и выберите приложение, для которого вы получаете эту ошибку. Нажмите «Изменить настройки» и введите домен, в котором находится ваше приложение, или вы перенаправляете его в поле «Домен приложения». Теперь просто сохраните и все должно заработать.

Изменить (решение из комментария выше): Если это не работает, когда вы не вошли в систему, может ли ваше приложение работать в режиме песочницы? Вы можете проверить, включен ли он в «Дополнительные настройки» вашего приложения.

0 голосов
/ 16 декабря 2011

Разрешение status_update , которое вы используете в области для loginUrl, не является допустимым разрешением. Взгляните на документы .

Это может быть вашей проблемой.

Также помните, что если пользователь уже авторизовал ваше приложение, он не увидит диалоговое окно разрешения снова при последующих входах в систему. Они будут приняты только через процедуру входа в Facebook.

EDIT:

Посмотрите на изображение, которое я прикрепил, Facebook перенаправит на URL, который вы указали в поле URL сайта в настройках приложения:

enter image description here

...