StackExchange の Emacs クライアントである StackModeは急速に進歩しており、現在、継続的なテストのために API に対して認証済みのリクエストを行う必要があります。(300 リクエストの制限により、1 日に実行できるテストの量が制限され始めています。)
免責事項:私はWeb 開発についてほとんど知りません。それは私が専門的に取り組んでいる分野の 1 つです。用語の誤用がありましたらお許しください。コメントでお気軽に修正してください。ありがとう!
StackExchange API は OAuth 2.0 認証を使用します。これは、クライアント認証を持つローカル クライアント アプリケーションであるためです。StackExchange から提供された次の情報があります。
- クライアントID
- クライアント シークレット (共有してはならないため、このフローでは必要ありません)
- 鍵
- 説明 (OAuth 関連ではありません)
- OAuth ドメイン
- アプリケーションの Web サイト(OAuth とは関係ありません)
- アプリケーション アイコン (OAuth とは関係ありません)
- Stack Apps の投稿(OAuth 関連ではありません)
次の追加情報を使用します。
- クライアント側のフローが有効になっています
- デスクトップ OAuth リダイレクト URI が有効になっている
答えを一般的かつ明示的に保つためにmy-client-id
、値に (etc.) を使用できます。実際の値 — 共有しても問題ないと思うものは、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リクエストを提供する必要があるのは、明らかに
- クライアントID
- 鍵
- OAuth ドメイン
このフローを Elisp で実装するにはどうすればよいですか?
現在の「流れ」
oauth2-auth-and-store
適切な変数を設定して実行します。開く
- 「承認」をクリック
開く
このURLで
アプリケーションが正常に追加されました
しかし、提供するコードがありません
oauth2
もちろん、回答だけでなくPRも大歓迎です。