public void Pay(
            string product,
            string action,
            int quantity,
            int?quantityMin,
            int?quantityMax,
            string requestId,
            string pricepointId,
            string testCurrency,
            FacebookDelegate <IPayResult> callback)
        {
            MethodArguments args = new MethodArguments();

            args.addNonNullOrEmptyParameter("product", product);
            args.addNonNullOrEmptyParameter("action", action);
            args.addNonNullOrEmptyParameter("quantity", quantity);
            args.addNonNullOrEmptyParameter("quantity_min", quantityMin);
            args.addNonNullOrEmptyParameter("quantity_max", quantityMax);
            args.addNonNullOrEmptyParameter("request_id", requestId);
            args.addNonNullOrEmptyParameter("pricepoint_id", pricepointId);
            args.addNonNullOrEmptyParameter("test_currency", testCurrency);
            var call = new CanvasUIMethodCall <IPayResult>(this, MethodPay, Constants.OnPayCompleteMethodName);

            call.Callback = callback;
            call.call(args);
        }
        public override void GameGroupJoin(
            string id,
            FacebookDelegate <IGroupJoinResult> callback)
        {
            MethodArguments args = new MethodArguments();

            args.addNonNullOrEmptyParameter("id", id);
            args.addNonNullOrEmptyParameter("display", "async");
            var call = new CanvasUIMethodCall <IGroupJoinResult>(this, MethodGameGroupJoin, Constants.OnJoinGroupCompleteMethodName);

            call.Callback = callback;
            call.call(args);
        }
        public override void GameGroupCreate(
            string name,
            string description,
            string privacy,
            FacebookDelegate <IGroupCreateResult> callback)
        {
            MethodArguments args = new MethodArguments();

            args.addNonNullOrEmptyParameter("name", name);
            args.addNonNullOrEmptyParameter("description", description);
            args.addNonNullOrEmptyParameter("privacy", privacy);
            args.addNonNullOrEmptyParameter("display", "async");
            var call = new CanvasUIMethodCall <IGroupCreateResult>(this, MethodGameGroupCreate, Constants.OnGroupCreateCompleteMethodName);

            call.Callback = callback;
            call.call(args);
        }
        public override void ShareLink(
            string contentURL,
            string contentTitle,
            string contentDescription,
            string photoURL,
            FacebookDelegate <IShareResult> callback)
        {
            MethodArguments args = new MethodArguments();

            args.addNonNullOrEmptyParameter("link", contentURL);
            args.addNonNullOrEmptyParameter("name", contentTitle);
            args.addNonNullOrEmptyParameter("description", contentDescription);
            args.addNonNullOrEmptyParameter("picture", photoURL);
            var call = new CanvasUIMethodCall <IShareResult>(this, MethodFeed, Constants.OnShareCompleteMethodName);

            call.Callback = callback;
            call.call(args);
        }
        public override void AppRequest(
            string message,
            OGActionType actionType,
            string objectId,
            string[] to,
            List <object> filters,
            string[] excludeIds,
            int?maxRecipients,
            string data,
            string title,
            FacebookDelegate <IAppRequestResult> callback)
        {
            ValidateAppRequestArgs(
                message,
                actionType,
                objectId,
                to,
                filters,
                excludeIds,
                maxRecipients,
                data,
                title,
                callback
                );

            MethodArguments args = new MethodArguments();

            args.addNonNullOrEmptyParameter("message", message);
            args.addCommaSeperateListNonNull("to", to);
            args.addNonNullOrEmptyParameter("action_type", actionType != null ? actionType.ToString() : null);
            args.addNonNullOrEmptyParameter("object_id", objectId);
            args.addNonNullParameter("filters", filters);
            args.addNonNullParameter("exclude_ids", excludeIds);
            args.addNonNullOrEmptyParameter("max_recipients", maxRecipients);
            args.addNonNullOrEmptyParameter("data", data);
            args.addNonNullOrEmptyParameter("title", title);
            var call = new CanvasUIMethodCall <IResult>(this, MethodAppRequests, Constants.OnAppRequestsCompleteMethodName);

            call.call(args);
        }
        public override void FeedShare(
            string toId,
            Uri link,
            string linkName,
            string linkCaption,
            string linkDescription,
            Uri picture,
            string mediaSource,
            FacebookDelegate <IShareResult> callback)
        {
            MethodArguments args = new MethodArguments();

            args.addNonNullOrEmptyParameter("to", toId);
            args.addNonNullOrEmptyParameter("link", link);
            args.addNonNullOrEmptyParameter("name", linkName);
            args.addNonNullOrEmptyParameter("caption", linkCaption);
            args.addNonNullOrEmptyParameter("description", linkDescription);
            args.addNonNullOrEmptyParameter("picture", picture);
            args.addNonNullOrEmptyParameter("source", mediaSource);
            var call = new CanvasUIMethodCall <IShareResult>(this, MethodFeed, Constants.OnShareCompleteMethodName);

            call.Callback = callback;
            call.call(args);
        }