コンテンツにスキップ

Android の Google ログイン

GitHub

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

AndroidでGoogleログインを使用する

AndroidでGoogleログインを使用する方法

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

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

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

      Google Consoleの検索バー
    2. で検索してください。 credentialsAPIs and Services 検索結果の

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

      Google Consoleで作成するクレデンシャル用ボタン
    4. 選択 OAuth client ID

      クレデンシャル作成メニュー内のOAuthクライアントIDオプション
    5. 選択する Android アプリケーションタイプ

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

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

      Android StudioプロジェクトナビゲーターのGradle Scriptsセクションを見つける
    8. モジュール build.gradle build.gradle (Module: app) ファイルをGradle Scriptsセクションで見つける app

      Gradle Scriptsセクションの
    9. Googleのソーシャルログインプラグインを使用するには、Google Consoleでプロジェクトを作成する必要があります。 android.defaultConfig.applicationIdプロジェクトを作成したら、Google ConsoleでOAuthクライアントIDとシークレットを取得します。 package name プロジェクトを作成したら、Google ConsoleでOAuthクライアントIDとシークレットを取得します。

      Androidアプリのビルド.gradleファイルのapplicationId設定を確認してください。
    10. ターミナルを開いて、プロジェクトのルートディレクトリに移動してください。 android ターミナルでgradlew signInReportコマンドを実行してください。 ./gradlew signInReport

    ターミナルで実行したコマンドの出力を確認してください。
    1. コマンドの出力からSHA1証明書の指紋をコピーしてください。 SHA1.
    Google Consoleに戻って、OAuthクライアントIDとSHA1証明書の指紋を入力してください。
    1. OAuthクライアントIDとSHA1証明書の指紋を入力したら、保存ボタンをクリックしてください。 applicationId OAuthクライアントIDとSHA1証明書の指紋を入力したら、保存ボタンをクリックしてください。 Package Name OAuthクライアントIDとSHA1証明書の指紋を入力したら、保存ボタンをクリックしてください。 create
    Androidクライアントの作成フォームにパッケージ名とSHA1フィールドを入力
  2. Android用にWebクライアントを作成する必要があります

    1. Google Consoleの Create credentials ページに移動

    2. Google Consoleの設定 Web

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

      にクリック
    4. Webクライアントの作成フォームにCreateボタンが付いています webClientId in your JS/TS code

      に使用します
  3. クライアントIDの詳細を表示し、WebクライアントIDをコピーします MainActivity

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

    2. 検索 MainActivity.java

      1. フォルダを開く app フォルダ

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

        Android Studioのプロジェクト構造でJavaフォルダを開く
      3. 検索してください MainActivity.java クリックしてください

        パッケージ構造でMainActivity.javaファイルを開く
    3. 変更 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. 初期化を呼び出します。ただし、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. Create a button and run the following code on click.

      const res = await SocialLogin.login({
      provider: 'google',
      options: {}
      })
      // handle the response
      console.log(JSON.stringify(res))
  5. バックエンドでエクスチェンジする場合、Googleのリフレッシュトークンをそこに保存し、バックエンドでリフレッシュする

    1. エミュレータをテスト用に設定する Device manager に移動し

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

      仮想デバイスを作成する
    3. 仮想デバイス設定で作成の仮想デバイスボタンをクリック Play Store アイコン

      プレイストア対応のハードウェアを表示

      このように見ると、 pixel 8 プレイストア対応の Play Store サービス

    4. クリック next

      デバイス作成ウィザードの次のボタン
    5. Capgo Builder / ネイティブクラウドビルド製品ページ (Page/area: Capgo Builder / native cloud build product page. Role: Short UI label or navigation item.) Google Play. OSイメージが次のタイプであることを確認 必ずしも Google Play

      必ず
    6. Google Playタイプのシステムイメージを表示

      システム画像選択画面の次のボタン
    7. あなたのデバイスを確認してください。エミュレータに名前を付けることができます

      デバイス設定確認画面
    8. 進む Device Manager シミュレータを起動してください

      デバイスマネージャー画面
    9. シミュレータが起動したら、設定画面に進んでください

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

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

    すべての設定が正しく行われた場合、Googleログインフローが正常に動作するはずです。

    AndroidでGoogleログインフローを実行するデモ。サインインプロセスと成功した認証を示しています。

トラブルシューティング

トラブルシューティング

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

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

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

Androidでは、このプラグインはGoogle Credential Manager(およびSign in with Google)を使用しますが、LEGACYのものではありません。androidx.credentials __CAPGO_KEEP_0__。ログキャットエラーなど GoogleSignInClient API GetCredentialCustomException: [28444] Developer console is not set up correctly から始まるスタックから

ログキャットをフィルタする GoogleProvider または CapgoSocialLogin Capacitorライブアップデートの代替 webClientId 失敗したログイン後、プラグインはパッケージ名、署名のSHA-1、およびマスクされた

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

Google Cloudの設定が必要です

セクション「Google Cloudの設定が必要です」

同じGoogle Cloudプロジェクト内に2種類のOAuth 2.0クライアントIDが必要です:クライアントタイプ使用する
どこに置くかサーバー / ID トークン聴衆webClientId in SocialLogin.initialize()
Android、署名キーごとに1つGoogleにAPKが許可されていることを証明しますGoogle Cloud Consoleのみ。IDをここに渡さないでください webClientId

よくある間違いは、AndroidクライアントIDを使用していることです webClientId. ここではWebクライアントIDが必要です。Credential ManagerにはAndroidクライアントIDは必要ありません。ただし、コンソールに正しいパッケージ名とSHA-1を登録する必要があります。

各テストビルドを署名する証明書ごとに1つのAndroid OAuthクライアントを作成してください

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

Android OAuthクライアントパッケージ名は、任意の applicationId オートメーション android/app/build.gradle パッケージ名のサフィックスを含めて、完全に一致する必要があります。 .debug テストモードのOAuthconsent画面があれば、Audience > Test usersの下にテストするGoogleアカウントをすべて追加してください。アプリをProductionに公開する必要はありません。

スコープ。 email Digital Asset Links ( profile )は、Credential Managerを通じてGoogleでサインインする必要はありません。assetlinks.jsonGoogle Cloudの変更は、最大数時間かけて反映されることがあります。

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

エラー 28444: 開発者コンソールが正しく設定されていない webClientId. Androidアプリを実行し、エラーが発生した場合のログを確認してください。

  1. 確認 webClientId はWebアプリケーションクライアントIDであり、 .apps.googleusercontent.com.
  2. Run the app, reproduce the failure, and read Logcat for GoogleProvider, signingSha1=, および package=.
  3. In Google Cloud Console > Credentials, 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

SHA-1 を Android OAuth クライアントに追加し、パッケージ名が一致する署名済み 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を使用してください webClientIdinitialize.

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

AndroidのGoogleログインから続けてください

AndroidでGoogleログインを継続する

あなたが使用している Googleログイン 認証とアカウントフローの計画に使用している場合 Using @capgo/capacitor-social-login for the native capability in Using @capgo/capacitor-social-login, @capgo/capacitor-social-login for the implementation detail in @capgo/capacitor-social-login, @capgo/capacitor-passkey for the implementation detail in @capgo/capacitor-passkey, @capgo/capacitor-native-biometric for the implementation detail in @capgo/capacitor-native-biometric, and 2要素認証 2要素認証の実装詳細について