anchor.diff:          (push #'dispatcher (symbol-value (ht-symb "*DISPATCH-TABLE*")))
           (oauth/authenticate (format NIL "http://localhost:~d/callback" *server-port*))))))
   
  -(defun initiate-authentication (&key (method :PIN) (consumer-key *oauth-consumer-key*) (consumer-secret *oauth-consumer-secret*))
  +(defun initiate-authentication (&key (method :PIN) (api-key *oauth-api-key*) (api-secret *oauth-api-secret*))
     "Starts the authentication process and returns an URL that the user has to visit.
   METHOD can be one of :PIN :SERVER or a string designating a callback URL.
   See OAUTH/AUTHORIZE, INITIATE-SERVER-AUTHENTICATION and OAUTH/AUTHENTICATE respectively."
  -  (setf *oauth-consumer-key* consumer-key
  -        *oauth-consumer-secret* consumer-secret
  -        *oauth-token* NIL
  -        *oauth-token-secret* NIL)
  +  (setf *oauth-api-key* api-key
  +        *oauth-api-secret* api-secret
  +        *oauth-access-token* NIL
  +        *oauth-access-secret* NIL)
     (case method
       (:PIN (oauth/authorize))
       (:SERVER (initiate-server-authentication))
  
positive.code: 
  (in-package #:org.tymoonnext.chirp)
  
  (defvar *oauth-consumer-key* NIL)
  (defvar *oauth-consumer-secret* NIL)
  (defvar *oauth-token* NIL)
  (defvar *oauth-token-secret* NIL)
  (defvar *oauth-signature-method* "HMAC-SHA1")
  (defvar *oauth-version* "1.0")
  (defvar *oauth/request-token* "https://api.twitter.com/oauth/request_token")
  
negative.code: 
  According to spec https://dev.twitter.com/docs/auth/implementing-sign-twitter"
    (let ((data (oauth/request-token callback-url)))
      (setf *oauth-access-token* (cdr (assoc :oauth-token data))
            *oauth-access-secret* (cdr (assoc :oauth-token-secret data)))
      (format NIL "~a?oauth_token=~a" *oauth/authenticate* *oauth-access-token*)))
  
  (defun oauth/authorize ()
    "Initiate the authentication through the PIN mechanism.
  