private IList<photo_tag> GetTags(List<string> pids, bool isAsync, GetTagsCallback callback, Object state)
        {
            var parameterList = new Dictionary<string, string> {{"method", "facebook.photos.getTags"}};
            Utilities.AddList(parameterList, "pids", pids);

            if (isAsync)
            {
                SendRequestAsync<photos_getTags_response, IList<photo_tag>>(parameterList, new FacebookCallCompleted<IList<photo_tag>>(callback), state, "photo_tag");
                return null;
            }

            var response = SendRequest<photos_getTags_response>(parameterList);
            return response == null ? null : response.photo_tag;
        }
 /// <summary>
 /// Returns the set of user tags on all photos specified.
 /// </summary>
 /// <example>
 /// <code>
 /// private static void RunDemoAsync()
 /// {
 ///     Api api = new Api(new DesktopSession(Constants.ApplicationKey, Constants.ApplicationSecret, Constants.ApplicationSecret, Constants.SessionKey));
 ///     api.Photos.GetTagsAsync(new List&lt;string&gt; {Constants.PhotoId}, AsyncDemoCompleted, null);
 /// }
 ///
 /// private static void AsyncDemoCompleted(IList&lt;photo_tag&gt; result, Object state, FacebookException e)
 /// {
 ///     var actual = result;
 /// }
 /// </code>
 /// </example>
 /// <param name="pids">The list of photos from which to extract photo tags.</param>
 /// <param name="callback">The AsyncCallback delegate</param>
 /// <param name="state">An object containing state information for this asynchronous request</param>        
 /// <returns>If no photo tags are found, the method will return an empty photos_getTags_response element. Text tags not corresponding to a user are not currently returned. Some tags may be text-only and will have an empty subect element. This occurs in the case where a user did not specifically tag another account, but just supplied text information.</returns>
 /// <remarks> A tag of a user will be visible to an application only if that user has not turned off access to the Facebook Platform.</remarks>
 public void GetTagsAsync(List<string> pids, GetTagsCallback callback, Object state)
 {
     GetTags(pids, true, callback, state);
 }