FQL (Facebook Query Language) 是Facebook提供的一种类似SQL的查询语言,允许开发者通过API查询Facebook社交图谱中的数据。不过需要注意的是,Facebook已经逐步淘汰FQL,推荐使用Graph API替代。
user_online_presence
和friends_online_presence
权限// 使用Facebook JavaScript SDK初始化
FB.init({
appId: 'YOUR_APP_ID',
cookie: true,
xfbml: true,
version: 'v2.12' // 注意使用支持的API版本
});
// 登录并获取权限
FB.login(function(response) {
if (response.authResponse) {
// 用户已授权
getOnlineFriends();
} else {
console.log('用户取消登录或未完全授权');
}
}, {scope: 'user_online_presence,friends_online_presence'});
// 获取在线好友函数
function getOnlineFriends() {
FB.api({
method: 'fql.query',
query: 'SELECT uid, name, online_presence FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me()) AND online_presence IN ("active", "idle")'
}, function(response) {
console.log('在线好友:', response);
// 处理返回的好友数据
displayOnlineFriends(response);
});
}
// 显示在线好友
function displayOnlineFriends(friends) {
let onlineList = document.getElementById('online-friends');
friends.forEach(friend => {
let li = document.createElement('li');
li.textContent = `${friend.name} (${friend.online_presence})`;
onlineList.appendChild(li);
});
}
由于FQL已被弃用,以下是使用Graph API的替代方案:
FB.api(
'/me/friends?fields=id,name,online_presence',
'GET',
{},
function(response) {
let onlineFriends = response.data.filter(friend =>
friend.online_presence === 'active' || friend.online_presence === 'idle'
);
console.log('在线好友:', onlineFriends);
}
);
问题1:获取不到在线好友列表
user_online_presence
和friends_online_presence
权限,并检查用户隐私设置问题2:API返回空数据
问题3:访问令牌无效
由于Facebook对在线状态API的限制越来越严格,你也可以考虑以下替代方案:
请注意,随着Facebook API的更新,上述方法可能需要调整以适应最新的API变化。
没有搜到相关的文章