Проверьте, было ли уже разрешено приложение JS-API Facebook - PullRequest
1 голос
/ 12 августа 2011

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

Я хочу избежать дублирования сообщений (спама) в случае, еслипользователь заходит на страницу второй раз и повторяет процесс.

Есть ли способ (при запросе разрешений) узнать, были ли они уже предоставлены, и, следовательно, пропустить часть сценария для совместного использования?

Вот мой код:

$('.preview a').click(function(e) {
                e.preventDefault();  
                FB.login(function(response) {
                    if (response.session) {
                        FB.api('/me/feed', 'post', {
                            message: 'Just unlocked the exclusive preview of...',
                            picture: 'http://website.com/share.png',
                            link: 'http://www.website.com',
                            name: 'Name goes here',
                            description: 'Description here'
                            },
                            function(response) {
                                if (!response || response.error) {
                                    alert(response.error);
                                } else {
                                    $('.preview').hide();
                                    $('.clip').show();
                                }
                            });
                        }
                },

                {perms:'read_stream,publish_stream'});
            });

Ответы [ 2 ]

0 голосов
/ 19 июня 2014

С 2011 по 2014 годы многое меняется.

Я сделал это решение для проверки разрешений "user_friends" и "publish_actions", если не разрешено и то, и другое, вынудите пользователя "повторно аутентифицироваться».Метод обратного вызова будет вызываться только при наличии всех разрешений.

function login(cb,forceAuth) {
    FB.getLoginStatus(function (response) {
        if (response.status !== 'connected' || forceAuth==true){
            FB.login(function (response) {
                checkPermissions(cb,false);
            }, {scope: 'publish_actions,user_friends'});
        } else {
            checkPermissions(cb);
        }
    });
}

function checkPermissions(cb,forceAuth){
    FB.api(
        "/me/permissions",
        function (response) {
            if (response.data[0]['publish_actions']==undefined || response.data[0]['publish_actions']==0 ||
                response.data[0]['user_friends']==undefined || response.data[0]['user_friends']==0) {
                if (forceAuth!=false)
                    login(cb,true);
            } else {
                cb();
            }
        }
    );
}

Как использовать:

login(function () {
    myLogedAndAllowedFunction();
});
0 голосов
/ 12 августа 2011

Я написал учебник об этом здесь , и вот пример:

FB.api({ method: 'fql.query', query: 'SELECT read_stream,offline_access,publish_stream FROM permissions WHERE uid=me()' }, function(resp) {
    for(var key in resp[0]) {
        if(resp[0][key] === "1")
            console.log(key+' is granted')
        else
            console.log(key+' is not granted')
    }
});

В статье также есть пример JS REST для справки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...