2010-03-03 50 views
0

我使用facebook api連接到Facebook並獲取我的朋友列表在一個C#winforms應用程序。檢查facebook用戶在線狀態

FaceBookService1.ConnectToFacebook(); 
FriendList.Friends = FaceBookService1.Friends.GetUserObjects(); 

而這兩行代碼讓我看到登錄用戶的朋友列表。我無法找出哪些用戶當前在線。我已經檢查了整個Facebook.Schema.User類型相同,但無濟於事。

任何線索?

謝謝。

回答

1

你有沒有看這個:Get Online Friends

以備將來使用郵政代碼:

public Collection<User> GetOnlineFriends() 
    { 
     Collection<string> onlineFriends = GetOnlineFriendIds(); 
     return GetUserInfo(StringHelper.ConvertToCommaSeparated(onlineFriends)); 
    } 

public Collection<string> GetOnlineFriendIds() 
    { 
     Collection<string> friendList = new Collection<string>(); 
     string xml = GetOnlineFriendsXML(); 
     if (!String.IsNullOrEmpty(xml)) 
     { 
      XmlDocument xmlDocument = LoadXMLDocument(xml); 
      XmlNodeList nodeList = xmlDocument.GetElementsByTagName("fql_query_response"); 
      if (nodeList != null && nodeList.Count > 0) 
      { 
       XmlNodeList results = xmlDocument.GetElementsByTagName("user"); 
       foreach (XmlNode node in results) 
       { 
        friendList.Add(XmlHelper.GetNodeText(node, "uid")); 
       } 
      } 
     } 
      return friendList; 
    } 

public string GetOnlineFriendsXML() 
    { 
     Dictionary<string, string> parameterList = new Dictionary<string, string>(3); 
     parameterList.Add("method", "facebook.fql.query"); 

     if (!string.IsNullOrEmpty(_userId)) 
     {     
      parameterList.Add("query", 
       String.Format(CultureInfo.InvariantCulture, "{0}{1}{2}", 
           "SELECT uid FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1=", _userId, ") AND 'active' IN online_presence")); 

     } 
     else 
     { 
      throw new FacebookException("User Id is required"); 
     } 
     return ExecuteApiCallString(parameterList, true); 
    }