/// <summary>
        /// Create Authorize Url
        /// </summary>
        /// <param name="request">request</param>
        /// <param name="clientId">clientId</param>
        /// <param name="responseType">responseType</param>
        /// <param name="scope">scope</param>
        /// <param name="redirectUri">redirectUri</param>
        /// <param name="state">state</param>
        /// <param name="extra">extra</param>
        /// <returns>string</returns>
        public static string CreateAuthorizeUrl(this AuthorizeRequest request,
                                                string clientId,
                                                string responseType,
                                                string scope       = null,
                                                string redirectUri = null,
                                                string state       = null,
                                                object extra       = null
                                                )
        {
            var values = new Dictionary <string, string>
            {
                { OidcConstants.AuthorizeRequest.ClientId, clientId },
                { OidcConstants.AuthorizeRequest.ResponseType, responseType }
            };

            if (!string.IsNullOrWhiteSpace(scope))
            {
                values.Add(OidcConstants.AuthorizeRequest.Scope, scope);
            }

            if (!string.IsNullOrWhiteSpace(redirectUri))
            {
                values.Add(OidcConstants.AuthorizeRequest.RedirectUri, redirectUri);
            }

            if (!string.IsNullOrWhiteSpace(state))
            {
                values.Add(OidcConstants.AuthorizeRequest.State, state);
            }



            return(request.Create(Merge(values, ObjectToDictionary(extra))));
        }
 /// <summary>
 /// Create Authorize request
 /// </summary>
 /// <param name="request">request</param>
 /// <param name="values">values</param>
 /// <returns>string</returns>
 public static string Create(this AuthorizeRequest request, object values)
 {
     return(request.Create(ObjectToDictionary(values)));
 }