🎉

docker内でyoutube apiのOAuth2.0の認証できなくて詰んでた話(解決済み)

2022/07/17に公開

https://qiita.com/ny7760/items/5a728fd9e7b40588237c

基本的には上記記事通りにYoutube APIを使って動画のアップロードをしてみようとしていた所、OAuth2.0の認証がうまく通らなくて一日ほど詰んでました。
(自分にとって神記事でした、ありがとうございます!)

起きていた問題

  • 認証フローは正常に進められていたが、最後のリダイレクト時にlocalhost:8080にアクセスできず詰んでいた
  • docker-compose.ymlでports: 8080:8080のような指定をしてもだめだった(ERR_EMPTY_RESPONSE)

結論

どうあがいてもホスト側でコンテナ内のlocalhost:8080に上手くアクセスできなかったので、

curl 'http://localhost:8080/?code~~~~'

という形でコンテナ内でコマンドを打って解決しました。

解決プロセス

いろいろ試していたのですが、最終的に解決につながったのはコンテナ内で

curl 'http://localhost:8080'

を試してみたところ、

<html><head><title>Authentication Status</title></head><body><p>The authentication flow has completed.</p></body></html>

上記のように返ってきました。

その後、OAuth2の認証フロー途中のターミナルを見てみると、

Failed to find "code" in the query parameters of the redirect.
Try running with --noauth_local_webserver.

というメッセージが返ってきており、「これもしかしてcurlでquery渡せればいけるのでは?」と考え、localhost:8080にリダイレクトされたときのURIをそのままcurlで渡してみたところ、『Authentication successful.』で無事通りました。

雑談

久々にかなり詰まってしまってだいぶストレス感じてましたが、なんとか解決できて良かったです。curlあまり使うことなかったのですが相当助けられました。dockerで上手くつながらないというときはcurl絡めるといいのかもという学びを得られたり、結果的にはよかったかもです。

後、OAuth2.0よくわからなすぎたので、タイミング見てもう少し深く学べたらいいなとかも思いました。

Discussion