AndroidでのGoogle Login
インストール手順と、このプラグインの完全なMarkdownガイドを含むセットアッププロンプトをコピーします。
はじめに
セクション「はじめに」このガイドでは、Android向けの Capgo Social Loginを使ってGoogle Loginをセットアップする方法を説明します。 すでに以下を読んでいることを前提としています。 一般的なセットアップガイド.
AndroidでGoogleログインを使う
「AndroidでのGoogle Loginの使用」というセクションこのパートでは、AndroidでGoogle Loginをセットアップする方法を説明します。
-
Android クライアント ID を作成する
-
検索バーをクリックします
-
を検索し、
credentials次をクリックします:APIs and Services該当の項目(スクリーンショットの番号2)
-
次の
create credentials
-
選択します
OAuth client ID
-
次の
Androidアプリケーションの種類
-
Android Studioを開く
-
ナビゲーターの最下部にある
Gradle Scripts
-
次を探して、
build.gradleモジュールのapp
-
以下をコピー
android.defaultConfig.applicationIdを探します。これがpackage nameGoogleコンソールでの
-
次に、ターミナルを開きます。必ず
androidアプリのフォルダに移動して実行します./gradlew signInReport
- このコマンドの先頭までスクロールしてください。次のように表示されるはずです。これをコピーして
SHA1.
- 次に、Google Console に戻ります。以下を入力してください
applicationIdをPackage Nameとして入力し、SHA1 も証明書フィールドに入力してクリックしますcreate
-
-
Web クライアントを作成する(Android にはこれが必要です)
-
以下にアクセスしてください:
Create credentialsGoogle Console のページ -
アプリケーションの種類を以下に設定
Web
-
クリック
Create
-
クライアントIDをコピーしてください。これを以下の用途で使用します:
webClientIdJS/TSの code 内で
-
-
以下を修正してください
MainActivity-
Android Studioでアプリを開いてください。以下のコマンドを実行できます:
cap open android -
次を探して、
MainActivity.java-
次を開きます:
appフォルダ
-
次を探して、
java
-
次を見つけて、
MainActivity.javaをクリックします
-
-
を修正します
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 {@Overridepublic 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@Overridepublic void IHaveModifiedTheMainActivityForTheUseWithSocialLoginPlugin() {}} -
ファイルを保存します
-
-
アプリでGoogle Loginを使用する
-
まず、以下をインポートします
SocialLoginimport { SocialLogin } from '@capgo/capacitor-social-login'; -
initialize を呼び出します。これは一度だけ呼び出すようにしてください。
// 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',}})}) -
呼び出す
SocialLogin.login。ボタンを作成し、クリック時に以下の code を実行します。const res = await SocialLogin.login({provider: 'google',options: {}})// handle the responseconsole.log(JSON.stringify(res))
-
-
テスト用のエミュレータを設定する
-
を開き、
Device managerプラスボタンをクリックします
-
仮想デバイスを作成する
-
以下のアイコンが付いたデバイスを選択してください
Play Storeアイコン
ご覧の通り、
pixel 8はPlay Storeサービスに対応しています -
クリック
next
-
OSイメージのタイプが以下であることを確認してください
Google Play. 必ず のタイプである必要がありますGoogle Play
-
次へをクリック
-
デバイスを確認してください。エミュレータの名前は任意で設定できます
-
に移動して
Device Managerシミュレータを起動してください
-
シミュレーターが起動したら、設定を開きます
-
〜を開きます
Google Play
- クリック
Updateそのまま60秒ほど待ちます
-
-
アプリケーションのテスト
手順通りに進めれば、Googleログインフローが正常に動作します:
トラブルシューティング
「トラブルシューティング」セクション問題が発生した場合は、まずアプリの設定とGoogle Cloud Consoleの値が一致しているか確認してください。AndroidのGoogle Sign-Inの失敗は、通常、パッケージ名、SHA-1、またはクライアントIDの不一致が原因です。
Credential Manager、SHA-1、およびFirebase
「Credential Manager、SHA-1、およびFirebase」というセクションAndroidでは、このプラグインはGoogle Credential Manager(androidx.credentials およびSign in with Google)を使用しており、レガシーな GoogleSignInClient API は使用しません。以下のような GetCredentialCustomException: [28444] Developer console is not set up correctly Logcatのエラーは、そのスタックから発生します。
ログイン失敗後、Logcatを次でフィルタリングしてください: 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つ) | APK が Google を呼び出せることを証明します | Google Cloud Console のみ。この ID を以下には渡さないでください: webClientId |
よくある間違いは、Android用のクライアントIDを webClientIdとして使用することです。Credential Managerでは、ここにWeb用のクライアントIDを指定する必要があります。Androidクライアント側には、コンソールに登録された正しいパッケージ名とSHA-1のみが必要です。
テストするビルドの署名に使用する証明書ごとに、Android用のOAuthクライアントを作成してください:
- Debug:
./gradlew signingReportのデバッグ用バリアントから取得します。 - Release: 実際にインストールするAPKまたはAABから取得します。
- Play App Signing: Play Console > App integrity > App signing key certificate から取得します。アップロードキーのSHA-1が登録済みであっても、Play Store向けのビルドにはこれが必要です。
この applicationId における android/app/build.gradle は、Android OAuthクライアントのパッケージ名と完全に一致している必要があります。これには .debug suffix.
OAuth同意画面が「テスト中」モードの場合は、テストに使用するすべてのGoogleアカウントを「ユーザー」>「テストユーザー」に追加してください。テストのためにアプリを本番環境に公開する必要はありません。 email と profile scopes. Digital Asset Links (assetlinks.json) は、Credential Manager を使用した Google ログインでは不要です。
Google Cloud の設定変更が反映されるまで、数時間かかる場合があります。
エラー 28444: デベロッパーコンソールの設定が正しくありません
「Error 28444: Developer console is not set up correctly」セクションこれは、インストールされている APK の署名証明書、パッケージ名、および webClientIdの組み合わせを Google が拒否したことを意味します。以下のチェックリストを確認してください:
- 確認事項
webClientIdは Web アプリケーションのクライアント ID であり、末尾が.apps.googleusercontent.com. - アプリを実行してエラーを再現し、Logcat で
GoogleProvider,signingSha1=やpackage=. - では Google Cloud Console > 認証情報Android OAuth クライアントを開き、パッケージ名と SHA-1 が正確であることを確認してください。
- リリースビルドでテストする場合は、デバッグ用の keystore だけでなく、そのビルドの SHA-1 も登録してください。
- アプリを Play Store で配信する場合は、Play App Signing の SHA-1 も登録してください。
- Web と Android のクライアントが同じ Google Cloud プロジェクト内にあることを確認してください。
- 同意画面が「テスト中」の状態である場合は、使用する Google アカウントがテストユーザーに含まれているか確認してください。
- コンソールの設定変更後は、反映されるまで待ってから再度試してください。
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を次のように使用します。 webClientId における initialize.
開発用のSHA-1証明書が取得できない場合は、カスタムキーストアを試してください。 こちらのIssueのコメントでは、 プロジェクトにキーストアを追加する方法について説明しています。
AndroidでのGoogle Loginの続きから進める
「AndroidでのGoogle Loginの続きから進める」セクション使用している場合 Androidでの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要素認証 二要素認証の実装の詳細については。