You can use the online_presence
column of the user
table, which gives the user's current Facebook Chat status. This isn't a foolproof "is this user online right now" but it does serve the general purpose as such. This column is a string which has one of four possible values: active
, idle
, offline
, or error
. Querying the friend
table in conjunction with this can yield the result you requested (in this case I consider "online" to mean active
or idle
):
SELECT uid FROM user WHERE
online_presence IN ('active', 'idle')
AND uid IN (
SELECT uid2 FROM friend WHERE uid1 = $user_id
)
UPDATE:
Note that you need the user_status
permission to read the user's status and user_online_presence
and/or friends_online_presence
permissions for the online_presence
.
Thanks to https://stackoverflow.com/users/613631/laphroaig for bringing this up (Facebook online friend), and to https://stackoverflow.com/users/570958/roozbeh15 for his answer.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…