public IEnumerable <SourceAddress> GetAddresses(string uids)
        {
            Authenticate();

            string call_id = GetNextCallNr();
            string query   = String.Format("SELECT uid, name FROM user WHERE uid IN ({0})", uids);

            Dictionary <string, string> requestParams = new Dictionary <string, string>();

            requestParams.Add("method", "fql.query");
            requestParams.Add("api_key", apiKey);
            requestParams.Add("session_key", sessionKey);
            requestParams.Add("call_id", call_id);
            requestParams.Add("v", "1.0");
            requestParams.Add("query", query);

            var result = channel.ExecuteQuery(apiKey, sessionKey, call_id, GenerateSignature(requestParams, sessionSecret), query);

            XNamespace ns = result.GetDefaultNamespace();

            foreach (XElement element in result.Descendants(ns + "user"))
            {
                SourceAddress address;

                try
                {
                    address = new SourceAddress(element.Element(ns + "uid").Value, element.Element(ns + "name").Value);
                }
                catch (Exception ex)
                {
                    Logger.Error("Unable to retreive user source address. Result = {0}. Exception = {1}", LogSource.Channel, element.Value, ex);

                    continue;
                }

                yield return(address);
            }
        }