KeihakuOh / Auth-go

0 stars 0 forks source link

memo #1

Open KeihakuOh opened 2 months ago

KeihakuOh commented 2 months ago

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など)にアクセスするための一時的な「鍵」です。認証フローの中で、これが安全に取得され使用される仕組みが実装されています。