StackMode正在迅速取得进展, StackMode 是StackExchange 的 Emacs 客户端,现在我们需要能够向 API 发出经过身份验证的请求以继续测试。(300 个请求的限制开始限制我一天可以进行多少测试。)
免责声明:我对 Web 开发知之甚少;这是我专业从事的领域之一。如果我滥用任何术语,请原谅我,并随时在评论中纠正我。谢谢!
StackExchange API 使用 OAuth 2.0 身份验证。由于这是具有客户端授权的本地客户端应用程序。StackExchange 向我提供了以下信息:
- 客户编号
- 客户端密钥(不得共享,因此在此流程中不需要)
- 钥匙
- 说明(与 OAuth 无关)
- OAuth 域
- 申请网站(与 OAuth 无关)
- 应用程序图标(与 OAuth 无关)
- Stack Apps Post(与 OAuth 无关)
带有以下额外信息:
- 客户端流已启用
- 桌面 OAuth 重定向 Uri 已启用
为了使任何答案既通用又明确,您可以使用my-client-id
(等)作为值。实际值——我认为我可以分享的值,可以在 GitHub 上找到。
我已经研究了半天,但与开始时相比,我离解决方案的距离并不远。我得到的最接近的是这段代码:
(require 'oauth2) ; available via GNU ELPA
(defconst stack-auth-token
(make-oauth2-token
:client-id stack-auth--client-id
:client-secret stack-auth--key))
;; this doesn't use the above, but it does open an auth page on SE
(oauth2-auth-and-store
"https://stackexchange.com/oauth/dialog"
nil nil
stack-auth--client-id
stack-auth--key
"https://stackexchange.com/oauth/login_success")
我必须提供 OAuth2 请求(从上面)的唯一事情显然是
- 客户编号
- 钥匙
- OAuth 域
如何在 Elisp 中实现这个流程?
当前的“流量”
oauth2-auth-and-store
使用适当的变量集执行。打开
- 点击“批准”
打开
用这个网址
应用添加成功
但我没有代码可提供
oauth2
除了答案,当然也欢迎 PR。