Open KeihakuOh opened 2 months ago
このプログラムの目的は、ユーザーがGoogleで認証を行い、その認証情報を使ってGoogle Photosに写真をアップロードすることです。以下は、そのプロセスをわかりやすくまとめた流れです。
プログラムが始まると、main関数が呼ばれます。 サーバーが起動し、2つのURLエンドポイント(/startと/callback)を設定します。 /startエンドポイント: 認証を開始するためのエンドポイント。 /callbackエンドポイント: 認証後、Googleからの情報を受け取るためのエンドポイント。 サーバーはポート8080でリクエストを待ち受けます。
setUp関数が呼び出され、認証に必要な情報を読み込みます。 クライアントID、クライアントシークレットなど、認証の設定に必要な情報はclient_secret.jsonファイルから読み込まれます。 認証エンドポイント(Googleのログイン画面のURL)や、アクセストークンを取得するためのURLも設定されます。 PKCE(Proof Key for Code Exchange)という追加のセキュリティ機能を使って、安全にトークンをやり取りする設定も行います。
ユーザーがブラウザでhttp://localhost:8080/startにアクセスすると、startエンドポイントが呼び出されます。 このエンドポイントでは、Googleの認証ページ(ログイン画面)にリダイレクトします。 リダイレクトURLには、認証情報(クライアントID、リダイレクトURIなど)が含まれています。 ここでユーザーにGoogleでのログインを促し、アプリにアクセス権を与えるよう求められます。
ユーザーがGoogleで認証(ログイン)してアプリの許可を与えると、Googleは認可コード(authorization code)を生成します。 その認可コードは、事前に指定したリダイレクト先(http://localhost:8080/callback)に送られます。
callbackエンドポイントが呼び出され、URLのクエリパラメータから認可コードを取得します。 プログラムは、その認可コードを使ってGoogleのトークンエンドポイントにリクエストを送り、アクセストークン(access token)を取得します。 アクセストークンとは、特定の操作(この場合はGoogle Photosへの写真アップロード)を行うための権限を持つ短期間有効なキーのようなものです。
アクセストークンを使用して、指定された写真ファイル(test.jpg)をGoogle Photosにアップロードします。 Google Photos APIのuploadsエンドポイントを使ってアップロードリクエストを送ります。 アップロードに成功すると、uploadToken(アップロードトークン)が返されます。
次に、取得したuploadTokenを使って、Google Photosライブラリに写真を追加します。 APIリクエストを送り、ライブラリに写真を登録します。
写真の追加が成功した場合、「Photo added to Google Photos library successfully!」というメッセージをユーザーに表示します。
Google Cloud ConsoleでOAuth 2.0のクライアントIDとクライアントシークレットを取得し、それをclient_secret.jsonに保存します。 Google Photos APIを有効にします。 サーバーの起動:
コードを実行してサーバーを起動します(go runコマンドなどを使用)。 ブラウザでの操作:
http://localhost:8080/startにアクセスして、認証プロセスを開始します。 まとめ このプログラムの主な目的は、ユーザーがGoogleで認証を行い、その後Google Photosに写真をアップロードすることです。 トークン(アクセストークン)は、アプリがユーザーに代わってGoogleのリソース(Photosなど)にアクセスするための一時的な「鍵」です。認証フローの中で、これが安全に取得され使用される仕組みが実装されています。
OAuth 2.0とGoogle Photos APIを使用して、ユーザーがGoogleで認証した後に写真をアップロードするアプリケーションの流れ流れ
このプログラムの目的は、ユーザーがGoogleで認証を行い、その認証情報を使ってGoogle Photosに写真をアップロードすることです。以下は、そのプロセスをわかりやすくまとめた流れです。
1. サーバーのセットアップ
プログラムが始まると、main関数が呼ばれます。 サーバーが起動し、2つのURLエンドポイント(/startと/callback)を設定します。 /startエンドポイント: 認証を開始するためのエンドポイント。 /callbackエンドポイント: 認証後、Googleからの情報を受け取るためのエンドポイント。 サーバーはポート8080でリクエストを待ち受けます。
2. Googleの認証設定(OAuth 2.0)
setUp関数が呼び出され、認証に必要な情報を読み込みます。 クライアントID、クライアントシークレットなど、認証の設定に必要な情報はclient_secret.jsonファイルから読み込まれます。 認証エンドポイント(Googleのログイン画面のURL)や、アクセストークンを取得するためのURLも設定されます。 PKCE(Proof Key for Code Exchange)という追加のセキュリティ機能を使って、安全にトークンをやり取りする設定も行います。
3. 認証の開始
ユーザーがブラウザでhttp://localhost:8080/startにアクセスすると、startエンドポイントが呼び出されます。 このエンドポイントでは、Googleの認証ページ(ログイン画面)にリダイレクトします。 リダイレクトURLには、認証情報(クライアントID、リダイレクトURIなど)が含まれています。 ここでユーザーにGoogleでのログインを促し、アプリにアクセス権を与えるよう求められます。
4. ユーザー認証と認可コードの取得
ユーザーがGoogleで認証(ログイン)してアプリの許可を与えると、Googleは認可コード(authorization code)を生成します。 その認可コードは、事前に指定したリダイレクト先(http://localhost:8080/callback)に送られます。
5. アクセストークンの取得
callbackエンドポイントが呼び出され、URLのクエリパラメータから認可コードを取得します。 プログラムは、その認可コードを使ってGoogleのトークンエンドポイントにリクエストを送り、アクセストークン(access token)を取得します。 アクセストークンとは、特定の操作(この場合はGoogle Photosへの写真アップロード)を行うための権限を持つ短期間有効なキーのようなものです。
6. Google Photosに写真をアップロード
アクセストークンを使用して、指定された写真ファイル(test.jpg)をGoogle Photosにアップロードします。 Google Photos APIのuploadsエンドポイントを使ってアップロードリクエストを送ります。 アップロードに成功すると、uploadToken(アップロードトークン)が返されます。
7. 写真をGoogle Photosライブラリに追加
次に、取得したuploadTokenを使って、Google Photosライブラリに写真を追加します。 APIリクエストを送り、ライブラリに写真を登録します。
8. 結果の表示
写真の追加が成功した場合、「Photo added to Google Photos library successfully!」というメッセージをユーザーに表示します。
プログラムが成功するための前提条件
事前準備:
Google Cloud ConsoleでOAuth 2.0のクライアントIDとクライアントシークレットを取得し、それをclient_secret.jsonに保存します。 Google Photos APIを有効にします。 サーバーの起動:
コードを実行してサーバーを起動します(go runコマンドなどを使用)。 ブラウザでの操作:
http://localhost:8080/startにアクセスして、認証プロセスを開始します。 まとめ このプログラムの主な目的は、ユーザーがGoogleで認証を行い、その後Google Photosに写真をアップロードすることです。 トークン(アクセストークン)は、アプリがユーザーに代わってGoogleのリソース(Photosなど)にアクセスするための一時的な「鍵」です。認証フローの中で、これが安全に取得され使用される仕組みが実装されています。