如何在Emacs Lisp中进行基本身份验证?

时间:2016-09-29 00:13:14

标签: authentication emacs

我尝试使用基本身份验证对API进行身份验证。看起来下面的代码应该可以工作,但是当我用Cx Ce运行它之后在 scratch 缓冲区中运行它时它会破坏(说:调试器已输入 - Lisp错误:(错误 - type-argument characterp))。

我的代码如下。如果有人知道我需要更改以使其工作,请告诉我!我在网上找不到完整的Emacs Lisp基本身份验证示例,所以这将是一个巨大的帮助。

(setq ztoken "areallyfaketokenrandomtokenwithfakechars")
(setq zsite "https://fake.zendesk.com/api/v2/users/1100000011/related.json")

(let ((url-request-method "GET")
  (url-request-extra-headers '(("Content Type" . "application/json")
   ("Authorization" . ,(concat "Basic "
(base64-encode-string
   (concat "joe@fake.com/token" ":" ztoken)))))))    
(condition-case nil
    (url-retrieve-synchronously
     (format zsite))))

1 个答案:

答案 0 :(得分:1)

正如法律清单所述,您的代码使用单引号而不是反向代码。下面是一种替代方法,它不使用反向标记/逗号。有关反引用的更多信息:https://www.gnu.org/software/emacs/manual/html_node/elisp/Backquote.html#Backquote

(let* ((url-request-method "GET")
       (base64 (concat "Basic "
               (base64-encode-string
            (concat "joe@fake.com/token" ":" ztoken))))
       (url-request-extra-headers (list (cons "Content Type" "application/json")
                    (cons "Authorization" base64))))    
  (condition-case nil
      (url-retrieve-synchronously
       (format zsite))))