コンテンツにジャンプ

Android用のGoogleログイン

GitHub

このガイドでは、Capgo Android用のSocial Loginの設定方法を学びます。Googleログインを設定する方法を学びます。一般的な設定ガイドをすでに読んだことを前提としています。 一般設定ガイド.

このセクションでは、AndroidでGoogleログインを設定する方法を学びます。

  1. AndroidクライアントIDを作成します。

    1. 検索バーをクリックしてください。

      Google Consoleの検索バー
    2. で検索してください。 credentials 検索結果を表示してください。 APIs and Services 検索結果の表示

      APIsとServicesが強調表示されているクレデンシャルオプション
    3. クリックしてください。 create credentials

      Google ConsoleのCreate credentialsボタン
    4. 選択してください OAuth client ID

      OAuthクライアントIDオプション
    5. 選択してください Android アプリケーションタイプ

      アプリケーションタイプの選択画面
    6. Android Studioを開く

    7. Android Studioのプロジェクトナビゲーターの最下部に移動し、 Gradle Scripts

      Gradle Scriptsセクション
    8. Find build.gradle コピーする app

      これはあなたの
    9. コピーする android.defaultConfig.applicationIdアプリケーションタイプの選択画面 package name Googleコンソール内

      アプリケーションIDの設定を示すBuild.gradleファイル
    10. 現在、ターミナルを開いてください。アプリのフォルダに移動し、以下のコマンドを実行してください。 android ターミナルの出力が表示される。 gradlew signInReportコマンドを実行します。 ./gradlew signInReport

    このコマンドの先頭にスクロールしてください。以下の内容が表示されるはずです。コピーしてください。
    1. SHA1証明書の指紋を示すターミナル出力 SHA1.
    Googleコンソールに戻り、パッケージ名とSHA1を入力し、[作成]ボタンをクリックしてください。
    1. パッケージ名とSHA1を入力したAndroidクライアント作成フォーム applicationId as the Package Name パッケージ名とSHA1を入力したAndroidクライアント作成フォーム create
    Android用にWebクライアントを作成する必要があります
  2. Googleコンソールに戻り、パッケージ名とSHA1を入力し、[作成]ボタンをクリックしてください。

    1. Capgoにアクセス Create credentials Google Consoleのページ

    2. アプリケーションの種類を Web

      アプリケーションの種類の選択画面
    3. クリックしてください Create

      Webクライアントの作成フォーム
    4. クライアントIDをコピーしてください webClientId JS/TSのcodeに使用します

      クライアントIDの詳細
  3. アプリケーションを修正してください MainActivity

    1. Android Studioでアプリを起動してください cap open android

    2. 検索してください MainActivity.java

      1. 「開く」 app フォルダ

        Android Studioプロジェクトナビゲータで
      2. 検索 java

        Android Studioプロジェクト構造で
      3. 検索して MainActivity.java をクリックしてください

        MainActivity.javaファイルをパッケージ構造で検索してください
    3. Modify MainActivity.java. Please add the following code

      import ee.forgr.capacitor.social.login.GoogleProvider;
      import ee.forgr.capacitor.social.login.SocialLoginPlugin;
      import ee.forgr.capacitor.social.login.ModifiedMainActivityForSocialLoginPlugin;
      import com.getcapacitor.PluginHandle;
      import com.getcapacitor.Plugin;
      import android.content.Intent;
      import android.util.Log;
      import com.getcapacitor.BridgeActivity;
      // ModifiedMainActivityForSocialLoginPlugin is VERY VERY important !!!!!!
      public class MainActivity extends BridgeActivity implements ModifiedMainActivityForSocialLoginPlugin {
      @Override
      public void onActivityResult(int requestCode, int resultCode, Intent data) {
      super.onActivityResult(requestCode, resultCode, data);
      if (requestCode >= GoogleProvider.REQUEST_AUTHORIZE_GOOGLE_MIN && requestCode < GoogleProvider.REQUEST_AUTHORIZE_GOOGLE_MAX) {
      PluginHandle pluginHandle = getBridge().getPlugin("SocialLogin");
      if (pluginHandle == null) {
      Log.i("Google Activity Result", "SocialLogin login handle is null");
      return;
      }
      Plugin plugin = pluginHandle.getInstance();
      if (!(plugin instanceof SocialLoginPlugin)) {
      Log.i("Google Activity Result", "SocialLogin plugin instance is not SocialLoginPlugin");
      return;
      }
      ((SocialLoginPlugin) plugin).handleGoogleLoginIntent(requestCode, data);
      }
      }
      // This function will never be called, leave it empty
      @Override
      public void IHaveModifiedTheMainActivityForTheUseWithSocialLoginPlugin() {}
      }
    4. Open the

  4. Googleログインをアプリケーションに使用する

    1. 最初にインポートする SocialLogin

      import { SocialLogin } from '@capgo/capacitor-social-login';
    2. 初期化を呼び出す。1度だけ呼び出す必要がある。

      // onMounted is Vue specific
      // webClientId is the client ID you got in the web client creation step not the android client ID.
      onMounted(() => {
      SocialLogin.initialize({
      google: {
      webClientId: '673324426943-avl4v9ubdas7a0u7igf7in03pdj1dkmg.apps.googleusercontent.com',
      }
      })
      })
    3. 呼び出し SocialLogin.login. ボタンを作成し、次の code をクリックすると実行します。

      const res = await SocialLogin.login({
      provider: 'google',
      options: {}
      })
      // handle the response
      console.log(JSON.stringify(res))
  5. エミュレータの設定

    1. に移動し Device manager プラスボタンをクリック

      Android Studioのデバイスマネージャーに移動し、プラスボタンを強調表示
    2. 仮想デバイスの作成

      仮想デバイスの設定で作成ボタン
    3. 任意のデバイスを選択し、 Play Store アイコン

      ハードウェアの選択でプレイストアをサポートするデバイスを表示

      Android の Google のソーシャルログインプラグインは、Capacitor の Live Update によって提供されます。 pixel 8 サポートします。 Play Store services

    4. Click next

      デバイス作成ウィザードの次のボタン
    5. OSイメージのタイプが Google Play. IT MUST タイプが必要です。 Google Play

      システムイメージの選択画面
    6. 次へクリック

      次のボタン
    7. 確認するデバイス。エミュレータに名前を付けることができます

      デバイス設定確認画面に完了ボタン
    8. シミュレータに Device Manager とシミュレータを起動してください

      デバイスマネージャーに仮想デバイスが表示され、再生ボタン
    9. シミュレータが起動したら、設定に進みます

      Androidエミュレータの設定画面
    10. シミュレータに Google Play

    設定画面のGoogle Playオプション
    1. をクリック Update 約60秒待ちます
    Google Playの更新画面に更新ボタン
  6. アプリケーションをテストしてください

    正しく設定した場合、Google ログインフローが正常に動作するはずです:

    Android 上の Google ログインフローをデモして、サインインプロセスと成功した認証を表示します。

トラブルシューティング

トラブルシューティング

問題が発生した場合は、まずアプリの設定を Google Cloud Console の値と比較してください。 Android の Google Sign-In の失敗は、パッケージ名、SHA-1、またはクライアントIDの不一致によって引き起こされることがよくあります。

クレデンシャルマネージャー、SHA-1、および Firebase

Android 上で、このプラグインは Google Credential Manager (

と Google にサインインする) を使用しますが、LEGACYandroidx.credentials __CAPGO_KEEP_0__。 GoogleSignInClient API. ログキャットエラーとして表示される GetCredentialCustomException: [28444] Developer console is not set up correctly ログキャットをフィルタしてください

ログキャットをフィルタする GoogleProvider または CapgoSocialLogin 失敗したログイン後、プラグインはパッケージ名、署名のSHA-1、およびマスクされた webClientId これらをGoogle Cloud Consoleで比較することができます。

必要なGoogle Cloud設定

「必要なGoogle Cloud設定」

Google Cloudプロジェクト内に2種類のOAuth 2.0クライアントIDが必要です:

クライアントタイプ使用場所
Webアプリケーションサーバー/IDトークン受信者webClientId に SocialLogin.initialize()
Android、署名キーごとに1つGoogleを呼び出すことを許可されているAPKを証明しますGoogle Cloud Consoleのみ。 このIDを webClientId

Android クライアント ID を使用するのはよくない慣行です。 webClientId各署名証明書でビルドをテストする場合に1つのAndroid OAuthクライアントを作成してください:

デバッグ:

  • デバッグ用の ./gradlew signingReport リリース: 実際にインストールするAPKまたはAABから
  • リリース: APK または AAB から実際にインストールするものです。
  • 必要なのは

の applicationId in android/app/build.gradle Android OAuth クライアント パッケージ名は、任意のサフィックスを含めて正確に一致する必要があります。 .debug サフィックス。

OAuthConsent画面がテストモードになっている場合、Audience > テストユーザーにテストするGoogleアカウントをすべて追加してください。アプリをProductionに公開する必要はありません。 email そして profile スコープ。assetlinks.jsonDigital Asset Links ( ) は、Credential Managerを通じてGoogleでサインインする必要はありません。

Google Cloudの変更は最大数時間かけて反映される場合があります。

エラー 28444: 開発者コンソールが正しく設定されていない

エラー 28444: 開発者コンソールが正しく設定されていない

これはほとんどの場合、Googleがインストール済みのAPK署名証明書、パッケージ名、 webClientIdを組み合わせて却下したことを意味します。

  1. 確認してください webClientId はWebアプリケーションクライアントIDであり、 .apps.googleusercontent.com.
  2. アプリを実行し、エラーが発生した場合のログキャットを読み、 GoogleProvider, signingSha1=, そして package=.
  3. で Google Cloud Console > 資格情報, Android OAuthクライアントを開き、パッケージ名とSHA-1の完全な値を確認する
  4. リリースビルドをテストしている場合、デバッグキーストアからSHA-1を登録するのではなく、そのビルドからSHA-1を登録する
  5. リリースビルドがPlayストアを通じて配布されている場合、Playアプリ署名SHA-1も登録する
  6. WebアプリとAndroidアプリが同じGoogle Cloudプロジェクト内に存在することを確認する
  7. consent画面がテストモードの場合、Googleアカウントがテストユーザーであることを確認する
  8. コンソールの変更後、待機して再試行する

USER_CANCELLED デバッグビルドの設定が不正である場合、ログイン後にアカウントを選択した後もSHA-1またはクライアントIDの不一致が発生する可能性がある。コンソールの設定を修正することから始める

インストールするビルドからSHA-1を抽出

「インストールするビルドからSHA-1を抽出」のセクション

デバッグまたはローカルビルド:

ターミナル画面
cd android && ./gradlew signingReport

署名済みリリースAPK:

ターミナル画面
keytool -printcert -jarfile android/app/release/app-release.apk

パッケージ名が一致するAndroid OAuthクライアントにそのSHA-1を追加し、同じ署名済みAPKを再インストールし、再度テストしてください。

ターミナル画面
adb install android/app/release/app-release.apk

トークンは次のようにネストされています result:

const login = await SocialLogin.login({ provider: 'google' });
const idToken = login.result?.idToken;

Firebase Authの場合、次のクレデンシャルを作成します idToken WebクライアントIDを使用します webClientId で initialize.

開発用SHA-1証明書を取得できない場合は、カスタムキーストアを試してください。 この問題コメント プロジェクトにキーストアを追加する方法について説明しています。

Google Login on Androidを使用している場合 AndroidでGoogleログイン 認証とアカウントフローの計画に役立つため、接続してください。 @capgo/capacitorでソーシャルログインを使用します。 Using @capgo/capacitor-social-login Using @capgo/capacitor-social-login Using @capgo/capacitor-passkey Using @capgo/capacitor-passkey Using @capgo/capacitor-native-biometric Using @capgo/capacitor-native-biometric for the capgo implementation detail in capacitor-native-biometric, and 2要素認証 Two-factor authentication