Facebook Javascript, Как определить, является ли пользователь фанатом моей страницы в Facebook?Хотя на моем сайте? - PullRequest
3 голосов
/ 31 марта 2011

У меня есть следующий код JS.

Цель кода - сначала получить идентификатор Facebook пользователя, а затем с помощью FQL проверить этот идентификатор по идентификатору моей страницы и убедиться, что пользователь является его поклонником.

Проблема, с которой я сталкиваюсь, заключается в том, что единственный раз, когда код на самом деле работает, - это если я захожу со своим личным профилем в Facebook.Я думаю, это потому, что мой профиль и приложение FB.init каким-то образом связаны?

Может кто-нибудь взглянуть на этот код и показать мне, где я иду не так?

Моя цель снова состоит в том, чтобыиспользуйте JS, чтобы сначала получить идентификатор пользователя (таким образом, его уменьшенное изображение), а затем сопоставить его с моей собственной страницей в Facebook, чтобы проверить, не являются ли они фанатами.Если они фанат фейсбука, то я, вероятно, дам им купон или еще что-нибудь.

Заранее спасибо.

<script src="http://connect.facebook.net/en_US/all.js"></script>
//Connect to facebook with my app id..
FB.init({ 
    appId:'135445813195028', 
    cookie:false, 
    status:true, 
    xfbml:true
});

//Check to see if user is actually CONNECTED???
FB.getLoginStatus(function(response) {
    if (response.session) {
        // USER IS CONNECTED
        FB.api('/me', function(user) {
            if (user != null) {
                var image = document.getElementById('imagez');
                image.src = 'http://graph.facebook.com/' + user.id + '/picture?type=large';
                var name = document.getElementById('name');
                name.innerHTML = user.name;
                FBID = user.id;
                console.log('Facebook ID:' + FBID);
                //assemble an FQL query to see if the guy is a fan of our page...
                myquery = 'SELECT uid FROM page_fan WHERE page_id = 126923080686340 AND uid = ' + FBID;
                console.log('query = ' + myquery); 
                ///Run FQL Query to see if user is a fan
                FB.api({
                    method: 'fql.query',
                    query: myquery
                }, function(resp) {
                    if (resp.length) {
                        var IsFan = true;
                        alert('You are A fan!')
                        console.log('Visitor is a fan');
                        //show coupon code...
                    } else {
                        alert('Signed into facebook, but Not a fan!');
                        var IsFan = false;
                        console.log('Visitor is not a fan');
                        //show like button...
                        //once like is clicked then refresh the page...
                    }
                });
            //END Run FQL Query to see if user is a fan
            }
        });
        //Figure out if they are a fan...
    } else {
        // USER IS NOT CONNECTED
        alert('NO USER session, user is not logged into facebook!!!');
    }
});

1 Ответ

1 голос
/ 31 марта 2011

FB.getLoginStatus проверяет, подключен ли пользователь к вашему приложению, а не к Facebook.

Но когда пользователь не подключен к вашему приложению, свойство .status может сообщить вампричина сбоя (, если пользователь вообще не вошел в систему, или только в ваше приложение ).

Итак, структура, которую вы должны использовать:

FB.getLoginStatus(function(response) {
        if(response.session) {
            alert('connected to Application');
        } else {
            // no user session available, someone you dont know
            if(response.status == "notConnected") {
                // But user is logged into facebook
                alert("Not connected to Application, but is logged in to Facebook");
            } else {
                // User is not logged into facebook
                  alert('Not logged in to facebook');
            }
        }
    });

Но вы не можете получить доступ к идентификатору пользователя, который не авторизовал ваше приложение.
Не через Javascript API.

...