GoでOAuthClient書いてたらbrokenAuthHeaderProvidersでつまづいた。

細かいことメモしておくシリーズ。

JINSMEMEのWebAPIが公開されていたので、暇とやる気を見つけてはOAuthクライアントを書いていた(https://github.com/mogeta/gomeme)のだけれど、Goのライブラリでつまづいたポイントをメモ。

どういうこと?


Goのライブラリを使っていて、コードに間違いはないと思うんだけど、OAuthの認証が上手く通らない。ということがあった。client_idとclient_secretが渡されず。Tokenが取得できない。という症状が…というのが事の起こり

詳細

https://godoc.org/golang.org/x/oauth2#RegisterBrokenAuthHeaderProvider
brokenAuthHeaderProvidersという関数はtoken.go内
https://github.com/golang/oauth2/blob/master/internal/token.go#L93
コメントには以下の様に書かれていて、
which doesn't support the HTTP Basic authentication scheme
とりあえず、Basic認証を使わない場合はここにURLを追加する必要がある。と認識。

解決方法

oauth2.RegisterBrokenAuthHeaderProvider(endpoint.TokenURL)
といったコードを記述。するとclient_idとclient_secretを渡すようになって無事解決
https://github.com/golang/oauth2/blob/master/internal/token.go#L187

0 件のコメント :