YouTubeで動画をアップロードしたりする時、まずはGoogleのOAuth2認証を通過しないといけない。
Using OAuth 2.0 to Access Google APIs | Google Identity Platform | Google Developers
認証情報からウィザード選択。
Windowsなのでその他のUI。
クライアントIDを作成。
ダウンロードボタンでjsonファイルをダウンロードして、完了。
client_id.jsonの内容は、
{"installed":{"client_id":"xxx.apps.googleusercontent.com","project_id":"bg1youtubetest1-xxxxxx","auth_uri":"https://accounts.google.com/o/oauth2/auth","token_uri":"https://accounts.google.com/o/oauth2/token","auth_provider_x509_cert_url":"https://www.googleapis.com/oauth2/v1/certs","client_secret":"xxx","redirect_uris":["xxx","http://localhost"]}}
ちょっと改変したけど大雑把にこんな感じのファイルがダウンロードされる。
main.cppで、
と書くのだが、
Google API OAuth2.0のトークン取得手順 - Qiita
Google API OAuth2.0のアクセストークン&リフレッシュトークン取得手順メモ - Qiita
CLIENT_IDは、client_id.jsonにあるやつ。
REDIRECT_URIは、redirect_urisの1番目のやつ。(localhostじゃなくてその前。)
SCOPEは、
Choose Auth Scopes | Gmail API | Google Developers
ここにサービスごとに書いてあるらしい。ただ、YouTubeはないな。
いろいろ調べたら、YouTubeは、
https://www.googleapis.com/auth/youtube
らしい。
で実行すると、
WSAStartup success! soc = 520 connect success! ctx = 00c95690 ssl = 00caed88 SSL_set_fd success! SSL_connect success! SSL_write written = 324 HTTP/1.0 302 Found Content-Type: application/binary Location: xxx P3P: CP="This is not a P3P policy! See https://support.google.com/accounts/answer/151657?hl=en for more info." Content-Language: en-US Date: Thu, 07 Sep 2017 03:50:44 GMT Server: ESF Content-Length: 0 X-XSS-Protection: 1; mode=block X-Frame-Options: SAMEORIGIN Set-Cookie: NID=111=xcq3PaRj5M4OBMdXAkmBuD_jO_uKYdfHe2vQwihJa8RQx4SwaU1J3SGQy9xfhNfLw1TRcpcqlPQAqv8UgOhwp4P5DfLevVrbumrIBw26Uqrp__hosTl4a1T0_Y4GdehB;Domain=.google.com;Path=/;Expires=Fri, 09-Mar-2018 03:50:44 GMT;HttpOnly Alt-Svc: quic=":443"; ma=2592000; v="39,38,37,35" 続行するには何かキーを押してください . . .
本来、このリクエストをブラウザでやると、上のLocation: xxxによって、そこにリダイレクトされる。
"xxx"の部分に、とても長いURLが入ってるので、そこに行くと、Googleの認証ボタンページに飛び、それを押すと、エディットボックスに認証コードが入っている。
で、この認証コードとそれまでに得た情報でトークンが得られるのだが、今回はあくまで認証コード取得までとする。
Sample/google/oauth2/auth/src/oauth2 at master · bg1bgst333/Sample · GitHub