Open8
golangでOAuth2.0 回りを実装する際の情報まとめ

「OAuth2.0ってなに?」ってレベルなので。

より詳細かつ簡潔

認可サーバーに問い合わせる実装をしたいが、接続先には当然レートリミットが存在する。
そこで、GoのOAuth2.0パッケージを活用するわけだが、なにぶん情報が少なく苦労している。
以下の記事が参考になりそう。

こちらも参考になりそう。
記事より引用。
一個下のポストの答えとして、RuseTokenSourceはTokenSourceと挙動が異なる。具体的には、有効期限が切れる前にトークンを生成しようと試みるかどうかのようだ。
ReuseTokenSource は トークンの有効期限内ではキャッシュして切れた後に初めて新しいトークンを生成しようとするというフローになっている。
そのため期限切れになったときにトークン発行リクエストが同時に行われる可能性(Thundering Herd)があり、その問題を回避するためか、トークン発行処理にはロックがかかっている。
全リクエストが独立して発行処理を行っても特に良いことはないので、このロックがあること自体は正しいけど、もし発行処理を行っているところが遅くなった場合は全リクエストに謎の(ロックまちによる)遅延がかかってしまう。

oauth2.ReuseTokenSource()
以下の回答に従うと、そもそも上記のメソッドはいらない?

趣味で実装しようとしているが、このスクラップがまったくの約立たずだったので、改善していく。
安心と信頼のフューチャー技術ブログが役立ちそう。