             (s/with-fn-validation
               (register-client+
                reg
-               (select-keys this [:client-id
-                                  :client-secret
-                                  :application-name
-                                  :homepage-uri
-                                  :description
-                                  :redirection-uri
-                                  :required-scopes
-                                  :requires-user-acceptance?
-                                  ])))]
+               (select-keys
+                this
+                [:client-id
+                 :client-secret
+                 :application-name
+                 :homepage-uri
+                 :description
+                 :redirection-uri
+                 :required-scopes
+                 :requires-user-acceptance?
+                 ])))]
         ;; In case these are generated
         (assoc this :client-id client-id :client-secret client-secret))
 

                     ;; authentication scheme (or other password-based
                     ;; HTTP authentication schemes)."

                     :body (format "client_id=%s&client_secret=%s&code=%s"
                                   (:client-id this)
                                   (:client-secret this)
                                   code)}
                    #(if (:error %)
                       %
                       (update-in % [:body] (comp decode-stream io/reader))))]

  WebService
  (request-handlers [this]
    {::redirection-endpoint ; used by the authorization server to return
                                        ; responses containing authorization
                                        ; credentials to the client via the resource
                                        ; owner user-agent.
     (->
      (fn [req]
        (let [params (:query-params req)
