10

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 で実装するにはどうすればよいですか?


現在の「流れ」

  1. oauth2-auth-and-store適切な変数を設定して実行します。
  2. 開く

    認証

  3. 「承認」をクリック
  4. 開く

    ページ

    このURLで

    URL

  5. アプリケーションが正常に追加されました

    追加した

  6. しかし、提供するコードがありませんoauth2

    促す

もちろん、回答だけでなくPRも大歓迎です。

4

2 に答える 2