Это может быть довольно сложно, но я недавно нашел решение, которое работает для меня. Возможно, вы захотите использовать JS-вызов (который вы можете вызывать / получать данные с помощью ExternalInterface во флеш-памяти). В вашем JS у вас будет что-то вроде этого:
//me() gets replaced by the current viewer's uid
var fan_qr = 'SELECT source_id FROM connection WHERE target_id = YOUR_APP_ID AND source_id = me()';
var fan_query = FB.Data.query(fan_qr);
fan_query.wait(function(rows) {
if(rows[0] && rows[0]['source_id'] != "") {
//they're a fan
} else {
//they're not a fan
}
}
Я забыл, где я нашел это первоначально, но подпираю этого парня для выяснения этого.
Поскольку вы получаете данные только о текущем пользователе, вам не нужен токен доступа. Я знаю, что FB только что повысил безопасность вызовов FQL, поэтому, если вам в конечном итоге понадобится токен доступа, вот как вы его получите:
FB.getLoginStatus(function(response) {
if(response.session) {
//hang on to this for later use
window.accessToken = response.session.access_token;
}
});
Тогда я видел людей, добавляющих его непосредственно в конец запроса, например:
var fan_qr = 'SELECT source_id FROM connection WHERE target_id = YOUR_APP_ID AND source_id = me()&access_token=' + window.accessToken;
Если это не сработает, вы можете выполнить запрос с помощью FB.api () и просто передать access_token в качестве дополнительного аргумента.
В любом случае, надеюсь, это поможет. Удачи с этим!