Как пригласить друзей на свой сайт, используя Facebook Invite?

Как пригласить друзей на свой сайт, используя Facebook Invite?
29.08.2011 Алексей Малыгин

После того, как facebook изменили свой SDK, пришлось немного попотеть над этой статьей. К тому же подвернулся вопрос одного из читателей блога, который пытался сделать свою “приглашалку”, используя устаревший у немного не актуальный материал.

Надеюсь, что эта статья, наконец-то ответит на все вопросы по поводу работы facebook invite.

К тому же, инструмент достаточно полезный, в качестве рекламы своего сайта (или facebook-страницы) и привлечения новых пользователей.

Начнем с создания нового приложения на facebook. Если вы еще не сталкивались с этим, то советую почитать статьи: часть1 и часть2.

Так что углубляться в нюансы создания и настройки нового приложения я не буду.

Теперь необходимо в бэкэнде подключить facebook sdk (скачать библиотеку здесь) и созданное приложение к нашему сайту.

[wp-like-locker]

include_once 'facebook.php';
 
        define("FACEBOOK_APP_ID", '[app id]');
        define("FACEBOOK_API_KEY", '[api key]');
        define("FACEBOOK_SECRET_KEY", 'secret key');
        define("FACEBOOK_CANVAS_URL", 'http://apps.facebook.com/[app name]/');
 
        $facebook = new Facebook(array(
                    'appId' => FACEBOOK_APP_ID,
                    'secret' => FACEBOOK_SECRET_KEY,
                    'cookie' => true,
                    'domain' => 'magdamagla.com'
                ));
 
        $session = $facebook->getSession();
 
        if (!$session) {
 
            $url = $facebook->getLoginUrl(array(
                        'canvas' => 1,
                        'fbconnect' => 0
                    ));
 
            echo "<script type="text/javascript">// <![CDATA[ top.location.href = '$url'; // ]]></script>";
        } else {
 
            try {
 
                $uid = $facebook-&gt;getUser();
                $me = $facebook-&gt;api('/me');
 
                $updated = date("l, F j, Y", strtotime($me['updated_time']));
 
                //echo "Hello " . $me['name'] . "
";
                //echo "You last updated your profile on " . $updated;
            } catch (FacebookApiException $e) {
 
                echo "Error:" . print_r($e, true);
            }
        }
        ?&gt;

[/wp-like-locker]

Обратите внимание на FACEBOOK_APP_ID и FACEBOOK_SECRET_KEY, туда необходимо вставить соответствующие значения приложения. app id, api key, app name — аналогично.

Ну а теперь визуально отобразим формочку приглашения:

<script type="text/javascript" src="http://connect.facebook.net/en_US/all.js"></script><script type="text/javascript">// <![CDATA[ FB.init({ appId : '[app id]', status : true, cookie : true, xfbml : true }); // ]]></script><script type="text/javascript">// <![CDATA[
<fb:fbml>
 
                    <fb:is-logged-out>
                        <fb:else>
                            <fb:request-form content="Текст приглашения. &lt;fb:req-choice url='http://magdamagla.com' label='Присоединяйтесь!' /&gt;" type="allfacebookcomua" invite="true" method="POST" action="http://magdamagla.com.info">
                                <fb:multi-friend-selector showborder="false" cols="5" rows="3" exclude_ids="111111" actiontext="Invite your friends to foursquare."></fb:multi-friend-selector>
                            </fb:request-form>
                        </fb:else>
                    </fb:is-logged-out>
 
            </fb:fbml>
// ]]></script>

Обратите внимание, в коде выше, есть атрибут “exclude_ids”, который позволяет через запятую перечислить те идентификаторы пользователей, высылать приглашения которым не нужно. Это может быть полезно, если не хотите высылать приглашения по несколько раз одним и тем же пользователям facebook. Можно на стороне php получить все “приглашенные” идентификаторы в переменную и выполнить впоследствии проверку, а все “лишние” идентификаторы передать в одной переменной в атрибут “exclude_ids”.

var_dumps($_POST[ids])

В принципе, логику навестить можно уже любую, пробуйте.

Вот и все, теперь мы получили форму что-то вроде этой:

  • простите, а что значит подключить в бэкэнде?

  • Так  и не понял

    • что именно? спрашивайте, поясним

  • Добрый день, хотелось бы уточнить как пользователи поймут что приглашение ИМЕННО на мой сайт, а не на fb-страницу или fb-приложение ?

  • NUne

    Извините,можно ли пошагово описать ход действий?вы объясняете вам кажется подробно,но больше вопросов возникают