前提・実現したいこと
GoogleのAPIを利用するコマンドラインアプリケーションを作成したいです。
Client Secretの扱いについて疑問があったので質問させていただきました。
発生している問題・エラーメッセージ
Googleが言うモバイルおよびデスクトップアプリ用のOAuth2.0のフローでは、
認証コード交換時にClient Secretが必要と言われています。
POST /token HTTP/1.1 Host: oauth2.googleapis.com Content-Type: application/x-www-form-urlencoded code=4/P7q7W91a-oMsCeLvIaQm6bTrgtp7& client_id=your_client_id& client_secret=your_client_secret& redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob%3Aauto& grant_type=authorization_code
ネイティブアプリケーションを作成する場合は、Client Secretをアプリケーションに埋め込むしか無いと考えていますが、気持ち悪いです。
こちらには
The process results in a client ID and, in some cases, a client secret, which you embed in the source code of your application. (In this context, the client secret is obviously not treated as a secret.)
と書いてありますが、どうも納得いかないです。
コールバックURIもlocalhost等になるかと思うので、第三者からOAuthクライアントIDを利用したAPIコールが可能だとおもいます。
第三者からのOAuthクライアントIDの利用されてしまうことは許容するしかないのでしょうか?
該当のソースコード
- https://developers.google.com/identity/protocols/oauth2/native-app#exchange-authorization-code
- https://developers.google.com/identity/protocols/oauth2#installed
試したこと
ドキュメントに書かれている通り実装し、動くことは確認しております。
補足情報(FW/ツールのバージョンなど)
2021年4月8日現在の情報で記載
あなたの回答
tips
プレビュー