/*ServerStream FbFeedStreamWaiting = null;
         * static void feed(ServerStream svstream) {
         *  if (FacebookClient.Instance.Token.Length > 0 && FbFeedStreamWaiting == null) {
         *      StreamBuffer buf = new StreamBuffer(svstream.PostData);
         *      string message = buf.readSStr();
         *      FbFeedStreamWaiting = svstream;
         *      FacebookClient.Instance.PostMessageOnWall(AppObject.GameInfo.FacebookFeedTitle,
         *          message,
         *          //AppObject.GameInfo.FacebookFeedAttahLink,
         *          AppObject.AppLink,
         *          AppObject.GameInfo.FacebookFeedImageUrl,
         *          new UploadStringCompletedEventHandler(fb_feed_handle));
         *  } else {
         *      svstream.Status = (int)ServerStreamStatus.STREAM_STATUS_ERROR;
         *  }
         * }
         * static private void fb_feed_handle(object sender, UploadStringCompletedEventArgs e) {
         *  if (FbFeedStreamWaiting != null) {
         *      if (e != null && e.Error == null) {
         *          FbFeedStreamWaiting.Status = (int)ServerStreamStatus.STREAM_STATUS_RESPONSED;
         *          //MessageBox.Show("Completed");
         *      } else {
         *          FbFeedStreamWaiting.Status = (int)ServerStreamStatus.STREAM_STATUS_ERROR;
         *          //MessageBox.Show("Error! Please retry later");
         *      }
         *      FbFeedStreamWaiting = null;
         *  }
         * }
         * */
        static public void getFriends(Actions.DelegateBegin onBegin, Actions.DelegateDone onDone, Actions.DelegateCancel onCancel)
        {
            Actions.ActionFacebookGetFriendsArg arg             = new Actions.ActionFacebookGetFriendsArg();
            Actions.ActionFacebookGetFriends    action_fbfriend = new Actions.ActionFacebookGetFriends();

            try {
                if (onBegin != null)
                {
                    action_fbfriend.OnBegin += onBegin;
                }
                if (onDone != null)
                {
                    action_fbfriend.OnDone += onDone;
                }
                if (onCancel != null)
                {
                    action_fbfriend.OnCancel += onCancel;
                }
                action_fbfriend.Do(arg);
            } catch (Exception ex) {
                if (onCancel != null)
                {
                    onCancel(null, arg);
                }
            }
        }
        async void loadFriend(ActionFacebookGetFriendsArg arg)
        {
            HttpClient client = new HttpClient();
            string     url    = FacebookClient.Instance.getAppUserUrl();

            try
            {
                string rs = await client.GetStringAsync(new Uri(url));

                arg.FriendIds.Clear();
                var juser = JsonConvert.DeserializeObject <FriendsList>(rs);
                if (juser != null && juser.data.Count > 0)
                {
                    for (int f = 0; f < juser.data.Count; f++)
                    {
                        arg.FriendIds.Add(Int64.Parse(juser.data[f].uid));
                    }
                }
                Done(arg);
            }
            catch (Exception ex)
            {
                Cancel(arg);
            }
        }