メニューに進む

Google Login on Android

GitHub

このガイドでは、Capgo Android用のソーシャルログインの設定方法を学びます。 既に一般的な設定ガイドを読んだと想定しています。 AndroidでGoogleログインの使用.

「AndroidでGoogleログインの使用」のセクション

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

general setup guide

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

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

      Google Consoleの検索バー
    2. を検索してください credentials と検索結果の APIs and Services 2番目のスクリーンショットの数字

      APIとサービスが強調表示されたクレデンシャルオプションを表示する検索結果
    3. をクリックしてください create credentials

      Google Consoleのクレデンシャル作成ボタン
    4. を選択してください OAuth client ID

      OAuthクライアントIDオプション
    5. Select the Android アプリケーションタイプ

      アプリケーションタイプの選択画面でAndroidオプションが強調表示されている
    6. Android Studioを開く

    7. ナビゲーターの最下部で、 Gradle Scripts

      Android StudioプロジェクトナビゲーターのGradle Scriptsセクション
    8. Find build.gradle モジュール app

      build.gradle (Module: app) ファイルをGradle Scripts セクションで
    9. . この値は、モジュールの android.defaultConfig.applicationId. This will be your package name Googleコンソール

      applicationIdの設定を示すBuild.gradleファイル
    10. ターミナルを開いてください。アプリのフォルダに移動し、 android ターミナルで gradlew signInReportコマンドを実行してください ./gradlew signInReport

    gradlew signInReportコマンドの終端部分を表示してください。SHA1の証明書の指紋が表示されます。
    1. ターミナル出力にSHA1の証明書の指紋が表示されます。 SHA1.
    Googleコンソールに戻り、
    1. に設定し、証明書のSHA1を入力し、 applicationId Androidクライアント作成フォームにパッケージ名とSHA1を入力し、 Package Name Webクライアントを作成してください(Android用に必要です) create
    Webクライアントを作成してください(Android用に必要です)
  2. Webクライアントを作成してください(Android用に必要です)

    1. Go to the Create credentials Google Consoleの

    2. Set application type to Web

      Webオプションが強調表示されているアプリケーションタイプの選択
    3. Click Create

      Webクライアントの作成フォーム
    4. Copy the client ID, you’ll use this as the webClientId code

      Client IDの詳細
  3. Modify your MainActivity

    1. Android Studioでアプリを開いてください。アプリを実行することができます。 cap open android

    2. Find MainActivity.java

      1. Open the app folder

        Android Studioプロジェクトナビゲータでフォルダを開く
      2. Find java

        Android Studioプロジェクト構造でJavaフォルダを探す
      3. Find your MainActivity.java とクリックしてください

        MainActivity.javaファイルをパッケージ構造で探す
    3. Modify MainActivity.java. 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. ファイルを保存してください

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

    1. 最初に、 SocialLogin

      import { SocialLogin } from '@capgo/capacitor-social-login';
    2. __CAPGO_KEEP_0__ を実行するには、ボタンを作成し、次のコードをクリック時に実行してください。

      // 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.loginGoogle を初期化するには、次の code を呼び出してください。

      const res = await SocialLogin.login({
      provider: 'google',
      options: {}
      })
      // handle the response
      console.log(JSON.stringify(res))
  5. エミュレータをテスト用に設定する

    1. に移動し、プラスボタンをクリックしてください。 Device manager Android Studioのデバイスマネージャーにプラスボタンが強調表示されている

      仮想デバイスを作成する
    2. 仮想デバイス設定の「Create Virtual Device」ボタン

      Playストアをサポートするデバイスを選択してください。
    3. デバイスを選択するアイコン Play Store Playストアをサポートするデバイスが表示されているハードウェア選択画面

      Select any device with a

      As you can see, the pixel 8 supports the Play Store services

    4. Click next

      Next button in device creation wizard
    5. Next button in device creation wizard Google Play. Make sure that the OS image is of type IT MUST Google Play

      be of type
    6. System image selection showing Google Play type images

      Click next
    7. Next button in system image selection screen

      __CAPGO_KEEP_0__の設定を確認する画面にFinishボタンが表示されます
    8. __CAPGO_KEEP_0__に Device Manager と、シミュレータを起動してください

      __CAPGO_KEEP_0__に表示されている仮想デバイスと、プレイボタンが表示されます
    9. シミュレータが起動したら、その設定画面に進んでください

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

    設定画面に表示されているGoogle Playオプション
    1. __CAPGO_KEEP_0__を Update 約60秒待ってください
    Google Playの更新画面に表示されているUpdateボタン
  6. アプリケーションをテストしてください

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

    Android上のGoogleログインフローをデモする:サインインプロセスと成功した認証

トラブルシューティング

トラブルシューティング

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

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

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

とSign in with Google)を使用し、LEGACYandroidx.credentials __CAPGO_KEEP_0__。ログキャットエラー GoogleSignInClient API. Logcat errors such as GetCredentialCustomException: [28444] Developer console is not set up correctly ログキャットをフィルタ

with GoogleProvider または CapgoSocialLogin 失敗したログイン後も。 webClientId プラグインはパッケージ名、署名のSHA-1、maskedをログします。

これらをGoogle Cloud Consoleと比較できます。

必要なGoogle Cloud設定

セクションのタイトル:必要なGoogle Cloud設定

同じGoogle Cloudプロジェクト内に2種類のOAuth 2.0クライアントIDが必要です。クライアントタイプ使用する
どこにWebアプリケーションwebClientId サーバー/IDトークン受信者 SocialLogin.initialize()
Android、署名キーごとに1つGoogleのAPK呼び出し許可を証明しますGoogle Cloud Consoleのみ。 このIDを webClientId

AndroidクライアントIDを使用するのはよくない習慣です webClientId. WebクライアントIDが必要です。 Credential ManagerにはWebクライアントIDが必要です。

AndroidクライアントIDは、コンソールで正しくパッケージ名とSHA-1を登録している場合にのみ必要です。

  • 各テストビルドを署名する証明書ごとに、Android OAuthクライアントを作成してください ./gradlew signingReport デバッグ:
  • デバッグ用に
  • リリース: 実際にインストールするAPKまたはAABから

Play App Signing: Play Console > アプリの安全性 > アプリ署名キー証明書から。この必要です。Play Storeビルドの場合、アップロードキーSHA-1が既に登録されている場合でも。 applicationId 署名キーごとに1つの android/app/build.gradle Android OAuthクライアントパッケージ名を含む任意のサフィックスと完全に一致する必要があります。 .debug OAuth承認画面がテストモードになっている場合、ユーザー > テストユーザー下のすべてのGoogleアカウントを追加してください。アプリをProductionに公開する必要はありません。

Googleアカウントを使用したSign inの場合、Digital Asset LinksはCredential Managerを使用する場合にのみ必要です。 email Google Cloudの変更は最大数時間かかることがあります。 profile エラー 28444:開発者コンソールが正しく設定されていないassetlinks.json「エラー 28444:開発者コンソールが正しく設定されていない」

これはほとんどの場合、Googleがインストール済みのAPK署名証明書、パッケージ名、

の組み合わせを拒否したことを意味します。

このチェックリストを通してください。

確認 webClientIdConfirm

  1. Confirm webClientId __CAPGO_KEEP_0__はWebアプリケーションクライアントIDであり、 .apps.googleusercontent.com.
  2. アプリを実行し、エラーが発生した場合にログキャットを参照し、 GoogleProvider, signingSha1=、および package=.
  3. In Google Cloud Console > 資格情報、Android OAuthクライアントを開き、パッケージ名とSHA-1を確認する
  4. リリースビルドをテストしている場合、デバッグキーストアからSHA-1を登録するのではなく、そのビルドからSHA-1を登録する
  5. 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 in initialize.

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

使用中の場合 Google Android のログイン を計画し、認証とアカウントフローの接続を行うには @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要素認証 2要素認証の実装詳細