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.