🎉
docker内でyoutube apiのOAuth2.0の認証できなくて詰んでた話(解決済み)
基本的には上記記事通りに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