メインコンテンツへスキップ

Google Loginの設定

GitHub

このガイドでは、Capgo Social Login を使用して Google Login をセットアップする方法を説明します。セットアップには以下が必要です:

  • Google アカウント

ここでは、Google が表示するログイン画面を設定します。

  1. 以下にアクセスしてください console.cloud.google.com
  2. プロジェクトセレクターをクリックします Google Console プロジェクトセレクター
  3. プロジェクトをまだ作成していない場合は、 新しいプロジェクトを作成してください.
    1. 次をクリックします: New project Google Console の New Project ボタン
    2. プロジェクト名を入力してクリックします Create 名前入力欄と Create ボタンが表示されたプロジェクト名入力画面
    3. 正しいプロジェクトを選択していることを確認してください セレクターに表示されたプロジェクト名で、正しいプロジェクトが選択されていることがわかります
  4. 設定を開始します OAuth consent screen
    1. 検索バーをクリックします

      Google Consoleの検索バー
    2. を検索し、 OAuth consent screen をクリックします

      OAuth consent screen オプションが表示された検索結果
    3. 同意画面を設定する

      次をクリックします: create

      External と Internal のオプションがある OAuth 同意画面のユーザータイプ選択
  5. アプリに関する情報を入力する
    1. まず App Information

      App name と User support email フィールドが表示される App Information セクション
      • あなたの App Name
      • 入力してください user support email
      1. お客様 可能 アプリのロゴを追加してください。

        OAuth同意画面のアプリロゴのアップロード欄
      2. お客様 すべきです を設定してください App domain

        承認済みドメイン欄があるアプリドメイン設定セクション
      3. お客様 必須 開発者のメールアドレスを入力してください

        メール入力フィールドを含む開発者連絡先セクション
      4. 次をクリックします: save and continue

        フォーム下部の「保存して続行」ボタン
  6. スコープを設定
    1. 次をクリックします: add or remove scopes

      スコープ設定画面のスコープ追加・削除ボタン
    2. 以下のスコープを選択してクリックしてください update

      emailとprofileスコープが選択されたスコープ選択ダイアログ
    3. クリック save and continue

      スコープ設定画面の「保存して続行」ボタン
  7. テストユーザーを追加
    1. 次をクリックします: add users テストユーザーセクションの「ユーザーを追加」ボタン
    2. Googleのメールアドレスを入力してEnterを押し、クリックします add テストユーザー用のメール入力フィールドと「追加」ボタン
    3. クリック save and continue テストユーザー画面の「保存して続行」ボタン
  8. クリック back to dashboard 完了ページの最下部にある「ダッシュボードに戻る」ボタン
  9. アプリの確認を申請する

オンラインアクセスとオフラインアクセスの違い

セクション「オンラインアクセスとオフラインアクセスの違い」

Capacitor で Google Login を利用する方法はいくつかあります。以下の表に、2つの違いをまとめています。

オンラインアクセスオフラインアクセス
バックエンドが必要❌✅
長期有効なアクセストークン❌✅
セットアップが簡単✅❌

どちらを選ぶべきか迷っている場合は、以下のシナリオを検討してください。

  1. ユーザーがログインした直後にカスタム JWT を発行したい場合。アプリは Google API を呼び出しません

    この場合は、オンラインアクセスを選択してください。

  2. アプリがクライアントから一部の Google API を呼び出しますが、バックエンドからは呼び出しません

    この場合は、オンラインアクセスを選択してください

  3. アプリがバックエンドから一部の Google API を呼び出しますが、ユーザーがアプリをアクティブに使用している場合のみです

    この場合は、オンラインアクセスを選択してください

  4. ユーザーがアプリをアクティブに使用していない場合でも、定期的にユーザーのカレンダーを確認します

    この場合は、オフラインアクセスを選択してください

オンラインアクセスのバックエンド例

オンラインアクセス用のバックエンドの例

このチュートリアルのこの部分では、バックエンドでユーザーを検証する方法を示します。

この例は非常にシンプルで、以下の技術に基づいています:

この例の code はここで見つかります こちら

ご覧のとおり:

Google 認証 code を検証する Code を示す VS

アイデアは比較的シンプルです。シンプルな GET リクエストを https://www.googleapis.com/oauth2/v3/tokeninfo これにより、トークンが有効かどうかを返します。有効な場合は、ユーザーのメールアドレスも取得できます。また、ユーザーのトークンに関するその他の情報も取得できます。

ユーザー詳細を含むトークン情報レスポンスを表示する Google OAuth Playground

そこから、独自の JWT を発行したり、セッション Cookie を発行したりできます。最終的な認証実装には、可能性は無限大です。

Google の API を呼び出したい場合は、以下の確認を強くお勧めします。 Google の OAuth 2.0 Playground。そこから、呼び出せる API を簡単に確認できます。

独自のバックエンドでのオフラインアクセスの使用

セクション「独自のバックエンドでのオフラインアクセスの使用」

オフラインアクセスを使用するには、以下が必要です:

  • HTTP サーバー

この例では、アプリでオフラインアクセスを提供するために、以下の技術を使用します:

この例の code はこちらから確認できます こちら

クライアント側の code は以下のようになります:

import { Capacitor } from '@capacitor/core';
import { GoogleLoginOfflineResponse, SocialLogin } from '@capgo/capacitor-social-login';
import { usePopoutStore } from '@/popoutStore'; // <-- specific to my app
const baseURL = "[redacted]";
async function fullLogin() {
await SocialLogin.initialize({
google: {
webClientId: '[redacted]',
iOSClientId: '[redacted]',
iOSServerClientId: 'The same value as webClientId',
mode: 'offline' // <-- important
}
})
const response = await SocialLogin.login({
provider: 'google',
options: {
forceRefreshToken: true // <-- important
}
})
if (response.provider === 'google') {
const result = response.result as GoogleLoginOfflineResponse
const res = await fetch(`${baseURL}/auth/google_offline`, {
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify({
serverAuthCode: result.serverAuthCode,
platform: Capacitor.getPlatform()
}),
method: "POST"
})
if (res.status !== 200) {
popoutStore.popout("Full google login failed", "check console");
return
}
const { jwt } = await res.json();
const userinfo = await fetch(`${baseURL}/auth/get_google_user`, {
headers: {
Authorization: `Bearer ${jwt}`
}
})
if (userinfo.status !== 200) {
popoutStore.popout("Full google (userinfo) login failed", "check console");
return
}
popoutStore.popout("userinfo res", await userinfo.text());
}
}

ここで欠けているものに注目してください。ここには SocialLogin.refresh() アプリ内での呼び出しがありません。これは意図的なものです。Google のオフラインモードでは、バックエンドが交換を行い、 serverAuthCode リフレッシュトークンを安全に保存した後にリフレッシュが実行されます。

使用している場合 Google Loginの設定 認証とアカウントフローを計画するには、これを次と連携させてください @capgo/capacitor-social-login の使用 「@capgo/capacitor-social-login の使用」のネイティブ機能のために、 @capgo/capacitor-social-login @capgo/capacitor-social-login の実装の詳細については、 @capgo/capacitor-passkey @capgo/capacitor-passkey の実装詳細については、 @capgo/capacitor-native-biometric @capgo/capacitor-native-biometric の実装の詳細、および 2要素認証 二要素認証の実装の詳細については。