Попытка войти в систему вошедшего в систему пользователя на Facebook возвращает ошибку вместо перенаправления назад

php facebook facebook-php-sdk

68 просмотра

1 ответ

0 Репутация автора

Я хочу, чтобы пользователи вошли в Facebook, прежде чем они смогут получить доступ к определенному контенту на моем сайте. Код работает нормально, когда пользователи вышли из Facebook. Им показывают кнопку, которая отправляет их в Facebook для входа в систему, а затем перенаправляет их обратно на мой сайт.

Еще несколько дней назад код также работал, когда они уже вошли в систему. Пользователи, вошедшие в систему, также увидели сообщение о входе в систему, но когда они щелкнули по нему, они сразу же были перенаправлены обратно на мой сайт, вообще не взаимодействуя с Facebook. Теперь, когда они уже вошли в систему, они видят страницу с ошибкой Facebook (с URL https://www.facebook.com/common/invalid_request.php ):

К сожалению, ваш запрос не может быть обработан.  Пожалуйста, попробуйте еще раз

Я использую Facebook PHP SDK версии 5, и это важная часть моего кода. «APP_ID» и «APP_SECRET», конечно же, являются правильными строками в живом коде.

require_once( $_SERVER["DOCUMENT_ROOT"] . '/facbookphpsdk/autoload.php' );

$fb = new Facebook\Facebook([
    'app_id' => 'APP_ID',
    'app_secret' => 'APP_SECRET',
    'default_graph_version' => 'v2.6',
    'default_access_token' => 'APP_ID|APP_SECRET'
]);
$helper = $fb->getRedirectLoginHelper();

try {
    $accessToken = $helper->getAccessToken();
} catch(Facebook\Exceptions\FacebookResponseException $e) {
    // When Graph returns an error
    echo "1<br>";
    echo $e->getMessage();
    exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
    // When validation fails or other local issues
    echo "2<br>";
    echo $e->getMessage();
    exit;
}

if (isset($accessToken)) {

    // user is logged in to Facebook

} else {

    $helper = $fb->getRedirectLoginHelper();
    $permissions = ['public_profile']; // optional
    $callback = 'http://my.website.com/login_to_facebook.php';
    $loginurl = $helper->getLoginUrl($callback, $permissions);

    // show a login dialog for the user to log in to Facebook

}
Автор: user1322720 Источник Размещён: 18.07.2016 08:42

Ответы (1)


0 плюса

0 Репутация автора

Проблема была не с моим кодом вообще.

По какой-то причине, не связанной с входом в Facebook, я указал URL-адрес входа в качестве действия формы и отправил пользователя на страницу входа в Facebook, отправив эту форму:

<form action="<?php echo $loginurl; ?>" method="post">
    <button type="submit" name="Facebook">Log in with Facebook</button>
</form>

До прошлой недели это работало нормально, и все еще работает для пользователей, которые не вошли в Facebook. По некоторым причинам это больше не работает для зарегистрированных пользователей.

Я решил проблему, предоставив URL для входа в систему в виде ссылки:

<a href="<?php echo $loginurl; ?>">Log in with Facebook</a>

Теперь это работает как вошедшим, так и вышедшим из системы пользователям.

Автор: user1322720 Размещён: 18.07.2016 09:56
Вопросы из категории :
32x32