public IRequest Authorize(string clientId, string callbackUrl, IEnumerable<Scope> requestedScopes, string state = null)
        {
            var request = new Request
            {
                BaseAddress = OAuthUrlBase,
                Resource = OAuthResource.Replace("{verb}", AuthorizeVerb),
                Method = HttpMethod.Get
            };
            request.AddParameter("client_id", clientId);
            request.AddParameter("scope", string.Join(" ", requestedScopes.OrderBy(s => s).Select(s => s.GetDescription())));
            request.AddParameter("response_type", "code");
            request.AddParameter("redirect_uri", callbackUrl);

            if (!string.IsNullOrEmpty(state))
                request.AddParameter("state", state);

            return request;
        }
        public IRequest GetAccessToken(string clientId, string clientSecret, string callbackUrl, string authorizationCode)
        {
            var nvc = new Dictionary<string, string>();
            nvc["client_id"] = clientId;
            nvc["redirect_uri"] = callbackUrl;
            nvc["client_secret"] = clientSecret;
            nvc["code"] = authorizationCode;
            nvc["grant_type"] = "authorization_code";

            var request = new Request
            {
                BaseAddress = OAuthUrlBase,
                Resource = OAuthResource.Replace("{verb}", TokenVerb),
                Method = HttpMethod.Post,
                Content = new FormUrlEncodedContent(nvc)
            };

            return request;
        }
 private Request ContentRequest(HttpMethod method, string baseUrl, string resource)
 {
     var request = new Request
     {
         BaseAddress = baseUrl,
         Resource = Append(resource),
         Method = method
     };
     return request;
 }