Facebook.FacebookClient.GetDialogUrl C# (CSharp) Method

GetDialogUrl() public method

Gets the Facebook dialog url.
/// If dialog or parameters is null. ///
public GetDialogUrl ( string dialog, object parameters ) : Uri
dialog string /// The dialog name. Values can be oauth, feed, pagetab, friends, pay, apprequests, and send. ///
parameters object /// The parameters. ///
return System.Uri
        public virtual Uri GetDialogUrl(string dialog, object parameters)
        {
            if (string.IsNullOrEmpty(dialog))
                throw new ArgumentNullException("dialog");
            if (parameters == null)
                throw new ArgumentNullException("parameters");

            IDictionary<string, FacebookMediaObject> mediaObjects;
            IDictionary<string, FacebookMediaStream> mediaStreams;
            var dictionary = ToDictionary(parameters, out mediaObjects, out mediaStreams) ?? new Dictionary<string, object>();

            bool isMobile = false;
            if (dictionary.ContainsKey("mobile"))
            {
                isMobile = (bool)dictionary["mobile"];
                dictionary.Remove("mobile");
            }

            // Automatically add client_id if not present in the parameters for the oauth dialog
            if (dialog.Equals("oauth", StringComparison.OrdinalIgnoreCase) && !dictionary.ContainsKey("client_id") && !string.IsNullOrEmpty(this.AppId))
            {
                dictionary.Add("client_id", this.AppId);
            }

            // Automatically add app_id if not present in the parameters
            if (!dialog.Equals("oauth", StringComparison.OrdinalIgnoreCase) && !dictionary.ContainsKey("app_id") && !string.IsNullOrEmpty(this.AppId))
            {
                dictionary.Add("app_id", this.AppId);
            }

            var sb = new StringBuilder();
            sb.AppendFormat(isMobile ? "https://m.facebook.com/" : "https://www.facebook.com/");
            if (!string.IsNullOrEmpty(Version))
            {
                sb.AppendFormat("{0}/", Version);
            }

            sb.AppendFormat("dialog/{0}?", dialog);

            foreach (var kvp in dictionary)
                sb.AppendFormat("{0}={1}&", HttpHelper.UrlEncode(kvp.Key), HttpHelper.UrlEncode(BuildHttpQuery(kvp.Value, HttpHelper.UrlEncode)));

            sb.Length--;

            return new Uri(sb.ToString());
        }

Usage Example

        /// <summary>
        /// Present Dialog asyncronizely
        /// </summary>
        /// <param name="method"></param>
        /// <param name="parameters"></param>
        /// <returns></returns>
        public static async Task<WebDialogResult> PresentDialogAsync(string method, Dictionary<string, object> parameters)
        {
            var session = FacebookSessionCacheProvider.Current.GetSessionData();
            if (session != null)
            {
                FacebookClient client = new FacebookClient();
                client.AppId = session.AppId;

                if (parameters != null && !parameters.ContainsKey("redirect_uri"))
                {
                    parameters.Add("redirect_uri", "https://www.facebook.com/connect/login_success.html");
                }
                Uri startUri = client.GetDialogUrl(method, parameters);

                Uri endUri = new Uri("https://www.facebook.com/connect/login_success.html");

                var result = await WebDialogBroker.PresentAsync(WebDialogOptions.None, startUri, endUri);

                if (result.ResponseStatus == WebDialogStatus.ErrorHttp)
                {
                    throw new InvalidOperationException();
                }
                else if (result.ResponseStatus == WebDialogStatus.UserCancel)
                {
                    throw new InvalidOperationException();
                }
                return result;
            }
            else
                return null;
        }
All Usage Examples Of Facebook.FacebookClient::GetDialogUrl