Обнаружение лайков с помощью Facebook JavaScript API + iFrame - PullRequest
3 голосов
/ 29 апреля 2011

Создание приложения с API JavaScript Facebook, которое будет встроено в страницу с использованием нового метода iframe.

Я хочу определить, понравилась ли им текущая страница.Обычно я использовал бы print_r ($ _ REQUEST) в PHP, но это не работает при использовании iframe.

Есть также эта опция: http://developers.facebook.com/docs/reference/fbml/visible-to-connection/, но она говорит, что она устарела, и я имеюникогда не нравился этот метод как довольно хакерский.

Как это сделать сейчас?Предпочитают использовать XFBML + JavaScript API, но при необходимости могут использовать PHP.

1 Ответ

3 голосов
/ 29 апреля 2011

Мы делали это несколько раз, и, похоже, это работает довольно хорошо. Он использует XFBML для генерации виджета кнопки «Мне нравится» и JS SDK для визуализации XFBML и подписки на события Facebook . Пример кода ниже:

edit: Поскольку вы хотите определить, является ли пользователь фанатом при загрузке страницы, и FB устарела, чтобы позволить вам получить его непосредственно от них, когда холст загружается путем передачи fb_page_id к строке запроса адреса, вам нужно установить приложение, чтобы пользователь мог проверить свою фан-страницу вашей страницы. Это, конечно, добавляет много трения вашему приложению, но это то, чем оно является сейчас - я думаю.

    <?php
require 'facebook.php';

// Create our Application instance (replace this with your appId and secret).
$facebook = new Facebook(array(
    'appId'  => 'YOUR APP ID',
    'secret' => 'YOUR APP SECRET',
    'cookie' => false,
));

try
{
    $session = $facebook->getSession();

    if (empty($session['uid']))
    {
        throw new Exception("User not connected to application.");
    }

    $is_fan = $facebook->api(array(
        'method'    => 'fql.query',
        'query'     => "SELECT uid, page_id FROM page_fan WHERE uid = {$session['uid']}"
    ));

    if (false == $is_fan || count($is_fan) == 0) // 0 results will be returned if the user is not a fan
    {
        $is_fan = false;
    }
    else
    {
        $is_fan = true;
    }   
}
catch (FacebookApiException $e)
{
    /**
     * you don't have an active user session or required permissions 
     * for this user, so rdr to facebook to login.
    **/

    $loginUrl = $facebook->getLoginUrl(array(
        'req_perms' => 'user_likes'
    ));

    header('Location: ' . $loginUrl);
    exit;
}
?>
<html>
<head>
</head>
<body>

<? if (empty($is_fan)): //user is not a fan. ?>
    <fb:like href="http://www.facebook.com/your-facebook-page"
        show_faces="true"
        width="400">
    </fb:like>
<? else: ?>
    Yay! You're a fan!
<? endif; >?

<div id="fb-root"></div>
<script src="http://connect.facebook.net/en_US/all.js" type="text/javascript">
    </script>
<script type="text/javascript">
FB.init({
    appId: '<?= FB_APP_ID; ?>',
    cookie: true,
    status: true,
    xfbml: true
});

// Subscribe to the edge creation event, from Facebook
FB.Event.subscribe('edge.create', function(response)
{
    alert("Congratulations! We are so excited that you are a fan now! woot!")
});

</script>

</body>
</html>

ладно, наконец-то получил все отформатированное с прямой уценкой. это было совсем не больно .. (sike): |

...