詩と創作・思索のひろば

ドキドキギュンギュンダイアリーです!!!

Fork me on GitHub

OAuth2 のよくあるフローを何回も書きたくない #Go

よくあるフローってのは Google の API ドキュメントを読んでたらよくでてくるやつ(Calendar API の例)。つまり:

  1. 前回のアクセストークンが保存されていたらそれを使い、なかったら
  2. localhost にサーバを立て、redirect_uri をそこに設定した認可のための URL をユーザに提示し、
  3. code を受け取ったらアクセストークンと交換し、
  4. トークンを保存する。

みたいな一連の流れ。これまでどの部分を抽象化したらいいのかあまり感覚がわからなくて手を出してなかったんだけど、いいかげん面倒なので書いてみた次第。

oauth2util package - github.com/motemen/go-nuts/oauth2util - pkg.go.dev

使い方は簡単で

import "github.com/motemen/go-nuts/oauth2util"
...
oauthClient, err = (&oauth2util.Config{
    OAuth2Config: oauth2Config,
    Name:         "myprog",
}).CreateOAuth2Client(context.Background())

とする。Name をもとにしたパスにトークンが保存される(<UserCacheDir>/<Name>/token.json)。トークンの復元・保存とかまではしなくていいよって場合は Config.AuthorizeByTemporaryServer() ってのを使えばおk。

はてなで一緒に働きませんか?