Перенаправление после нажатия на кнопку входа в Facebook, даже если вы уже вошли в Facebook

#facebook #facebook-graph-api

#Facebook #facebook-graph-api

Вопрос:

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

Если пользователь не авторизован в Facebook, появится всплывающее окно с запросом его учетных данных, и после этого он будет перенаправлен на loggedin.html .

 <div id="fb-root"></div>
<fb:login-button perms="email"></fb:login-button>

<script>
    window.fbAsyncInit = function() {
        FB.init({
            appId  : 'xxxxxxxxxxxx',
            status : true,
            cookie : true,
            xfbml  : true
        });

        FB.Event.subscribe('auth.login', function() {
            window.location = "loggedin.html";
        });
    };

    (function() {
        var e = document.createElement('script');
        e.src = document.location.protocol   '//connect.facebook.net/en_US/all.js';
        e.async = true;
        document.getElementById('fb-root').appendChild(e);
    }());
</script>
  

Если пользователь уже вошел в Facebook, когда он нажимает на кнопку, всплывающее окно появляется и сразу исчезает, я согласен с этим. Но пользователь не перенаправляется на loggedin.html . Как я могу это сделать?

Ответ №1:

Если вы используете PHP SDK, вы можете использовать следующий код:

 require_once 'path/to/facebook.php';
define('A_ID', '*YOUR APP ID*');
define('A_SECRET', 'YOUR APP SECRET');

$facebook = new Facebook(array('appId' => A_ID, 'secret' => A_SECRET, 'cookie' => true));
$userId = $facebook->getUser();

if (!$userId):
  ?>
    <!-- HTML to show if the $userId isn't available (user isn't logged in) -->
  <?php
else:
  ?>
    <!-- HTML to show if the $userId is available (user is logged in)-->
  <?php
endif;
  

В идеале вы должны использовать PHP SDK, поскольку это дает вам больше контроля над данными и способом их отображения, чем использование JS SDK для вставки данных.

Facebook имеет ссылку на PHP SDK здесь:developers.facebook.com/docs/reference/php

Ссылка на JavaScript SDK находится здесь:developers.facebook.com/docs/reference/javascript

Ответ №2:

У меня была такая же проблема. Я решил это, используя обычную ссылку вместо thingy и добавив обработчик кликов к этому href с facebook FB.login функция javascript

http://developers.facebook.com/docs/reference/javascript/FB.login/

В рамках различных ответов я мог бы обрабатывать соответствующие Ajax-функции.