結論
Googleログインのエラー10(DEVELOPER_ERROR)は、Androidアプリの設定に誤りがあることを意味します。ローカルではログインできるのにPlayのクローズドテストで失敗する場合は、Playからインストールされたアプリの署名SHA-1と最終的なパッケージ名が、正しいFirebaseまたはGoogle Cloudのプロジェクトに登録されているかを確認してください。あわせて、serverClientIdやwebClientIdに指定しているのがAndroidのクライアントIDではなく、ウェブアプリケーションのクライアントIDであることも確認します。そのうえで、Google Playからインストールしたビルドで再テストしてください。
この記事で扱うのは、Google Playから配信されたアプリでネイティブのGoogleログインが失敗するという一つの問題です。似たように見える別のエラーと区別したうえで、フレームワーク、ほかのログインプロバイダ、テスターに報告してもらう内容を取り上げます。引用しているGoogleのページはすべて2026年10月16日に確認したもので、コミュニティからの報告はその旨を明記しています。出典は末尾にまとめています。
このページの内容
PlayのビルドでGoogleログインを直す
テスターがインストールしたアプリと、そのアプリ用に登録されたパッケージ名および署名SHA-1を一致させます。以下の手順を順番に進めてください。FirebaseとGoogle Cloudそれぞれの手順はその後に続きます。
どのアプリが失敗しているかを確認する
テスターがGoogle Playのクローズドテストからアプリをインストールしたことを確認し、インストールされているバージョンを控えます。次に、そのビルドの最終的なアプリケーションIDを控えてください。Androidのビルドガイドによると、アプリケーションIDはapplicationIdプロパティで定義されます。これはソースのnamespaceと異なる場合があり、ビルドフレーバーで接尾辞が付くこともあります。テスターがそもそもアプリをインストールできない場合は別の問題です。テスターがアプリを利用できない理由をご覧ください。
Playアプリ署名を開く
Play Consoleでアプリを開き、Protected with Playに移動します。Googleは2026年5月にアプリ署名をここへ移しており、Google自身のヘルプでは次のステップが2通りの名前で書かれています(下の表を参照)。どちらの経路でも同じページにたどり着きます。
| Googleが記載している経路 | Googleが使っている場所 | 開く項目 |
|---|---|---|
| Protected with Play > Play Store distribution > Go to Play app signing | Googleが使っている場所Play Consoleヘルプ「Play アプリ署名を使用する」のAPI登録のセクション | 開く項目App signing key certificate(アプリ署名鍵の証明書)、次にSHA-1の値 |
| Protected with Play > Play Store protection > Manage Play app signing | Googleが使っている場所Google Playの2026年5月の更新情報と、同じヘルプページの別のセクション | 開く項目同じページです。メニューのラベルはアカウントによって異なる場合があります |
アプリ署名鍵のSHA-1をコピーする
アップロード鍵の証明書ではなく、App signing key certificate(アプリ署名鍵の証明書)のセクションを開き、そのSHA-1をコピーします。Playにアプリの署名鍵が複数表示されている場合は、該当するフィンガープリントをそれぞれ登録してください(複数の署名証明書を参照)。既存のデバッグ用やローカル用のフィンガープリントは残したまま、その横にPlayのものを追加します。ログインを直すために署名鍵をローテーションしないでください。
アプリがログインに使う場所に登録する
アプリが使っている方に合わせて、Firebaseの手順またはGoogle Cloudの手順を使います。登録先は、アプリ内のクライアントIDを発行したのと同じプロジェクトにしてください。
インストール済みのPlayビルドで再テストする
FirebaseやGoogle Cloudの登録だけを変更した場合は、何かをビルドする前に、Playからインストール済みのアプリでもう一度試してください。登録だけの修正で、新しいアップロードなしに直ったという開発者の報告があります。同梱の設定ファイル、クライアントID、コード、依存関係を変更した場合は、同じクローズドテストのトラックに新しいビルドをアップロードし、そのビルドでテストします。新しいフィンガープリントが反映されるまでの決まった時間をGoogleは公表していないため、一定の時間待つのではなく再テストしてください。
FirebaseにPlayの証明書を追加する
Playの署名フィンガープリントを追加する前に、対応するAndroidアプリを選択してください。手順はFirebaseのフィンガープリントに関するヘルプとGoogleログインのガイドに沿っています。
- Firebaseコンソールでアプリが使っているプロジェクトを開き、プロジェクトの設定 > 全般に進みます。
- マイアプリで、失敗しているビルドとパッケージ名が一致するAndroidアプリを選択します。
- フィンガープリントを追加をクリックし、Playアプリ署名のSHA-1を貼り付けて保存します。既存のフィンガープリントを置き換えるのではなく、その横に追加してください。
- Authentication > Sign-in methodで、Googleが有効になっていることを確認します。
- Firebaseで更新版の
google-services.jsonのダウンロードを求められた場合は、プロジェクト内のファイルを置き換えます。Firebaseはこのファイルについて「Googleログインに必要なOAuthクライアント情報が含まれています」と説明しているため、ファイルが変われば新しいビルドが必要です。ファイルのプロジェクトとパッケージが、失敗しているアプリと一致しているかも確認してください。
SHA-256は、特定のFirebaseサービスが求める場合にのみ追加してください。たとえば電話番号認証では、Play Integrityを使う経路でSHA-256を使います。Googleログイン自体が頼りにしているのはSHA-1です。
Firebaseを使わずにGoogle Cloudで設定する
2つのOAuthクライアントはそれぞれ別の役割を持っています。Androidクライアントはアプリを登録するもので、トークンのリクエストに使うのはウェブクライアントIDです。
| クライアントの種類 | 登録する内容 | 使う場所 |
|---|---|---|
| Android | 登録する内容パッケージ名と署名証明書のSHA-1 | 使う場所ネイティブアプリの身元を登録します。このクライアントIDをserverClientIdに貼り付けることはありません。 |
| ウェブアプリケーション | 登録する内容ウェブクライアントID | 使う場所トークンのリクエストで指定するserverClientIdまたはwebClientId、およびバックエンドが受け入れるオーディエンスです。GoogleのSign in with Googleのcodelabでは、これが「Googleログインサービスのバックエンドクライアントとして機能する」と説明されています。 |
- クライアントIDを発行したプロジェクトを選択し、Google Auth Platform > クライアントを開きます(Google Cloudのヘルプ)。
- 新しく作成する前に、このパッケージ名とSHA-1を持つAndroidクライアントがすでにないか確認します。
- ない場合はクライアントを作成を選び、アプリケーションの種類をAndroidに設定して、名前、パッケージ名、Playアプリ署名のSHA-1を入力し、作成をクリックします。AndroidのフォームにあるのはSHA-1の欄で、SHA-256はここには入れません。
- 必要なパッケージと証明書の組み合わせを、たとえばデバッグ用、ローカルのリリース用、Play用のようにそれぞれ登録します。
- トークンのリクエスト用にウェブクライアントはそのまま残し、クライアントシークレットは決してアプリ内に入れないでください。
修正できたことを確かめる
一度ログインに成功しただけでは、リリースが直ったことの証明にはなりません。このチェックリストはGoogleのルールではなく、私たちが推奨する受け入れテストです。最後の行が重要なのは、ある開発者のケースで一度はログインに成功したのに次のログインで失敗したためです。これはセッションの問題で、1回の確認では見逃してしまいます。
| 確認項目 | 合格の根拠 | 失敗した場合 |
|---|---|---|
| 正しいアプリとバージョン | 合格の根拠テスターが、意図したPlayからのインストールとビルドであることを確認している | 失敗した場合まずリリースやトラックの配信の問題を解決する |
| 最初のログイン | 合格の根拠アカウントを選ぶと、ログイン済みの状態でアプリに戻る | 失敗した場合正確な例外を記録し、下のエラー表を使う |
| ログインが必要な機能 | 合格の根拠テスターがログインの必要な機能を使える | 失敗した場合アプリとバックエンドのトークン処理を調べる |
| ログアウトして再ログイン | 合格の根拠再インストールせずに2回目のログインができる | 失敗した場合セッションとプロバイダのログアウト処理を調べる |
| 以前失敗していた端末 | 合格の根拠同じテスターと同じ端末で成功するようになった | 失敗した場合証明書、OS、アカウント、実際のビルドを比較する |
| テストの継続 | 合格の根拠テスターがオプトインしたままで、修正内容を記録している | 失敗した場合登録(オプトイン)の問題はログインとは別に解決する |
デバッグではログインできるのに、クローズドテストで失敗するのはなぜですか?
Google Play経由でインストールされたアプリは、ローカルでインストールしたAPKとは署名者が異なる場合があります。Googleのクライアント認証ガイドには「Android Studioはアプリをデバッグ証明書で自動的に署名します」とあります。自分でビルドしたリリース版は、そのバリアントに設定されている鍵で署名されます。Playアプリ署名を使う場合、アップロードするバンドルにはアップロード鍵で署名し、テスターが受け取るAPKにはGoogleがアプリ署名鍵で署名します。
これらの鍵は役割が異なりますが、値が常に異なるとは限りません。独自の署名鍵を提供することもでき、1つの鍵を2つの役割に使う構成もあります。鍵のラベルではなく、実際のフィンガープリントを比較してください。
| インストールされたアプリ | 確認する証明書 | 最初の対応 |
|---|---|---|
| Playアプリ署名を使った、Playの内部テスト、クローズドテスト、オープンテスト、製品版からのインストール | 確認する証明書Protected with Playにある、Playのアプリ署名証明書(1つまたは複数) | 最初の対応該当するPlayのSHA-1をそれぞれ登録する |
| Android Studioからのデバッグ実行 | 確認する証明書そのマシンのデバッグ証明書 | 最初の対応そのSHA-1を、対応するアプリケーションIDで登録する |
| 自分のマシンでビルドしたリリースAPK | 確認する証明書そのリリースバリアントに設定されている証明書 | 最初の対応「リリース」だからGoogleの署名者だと思い込まない |
| 内部アプリ共有のリンク | 確認する証明書内部アプリ共有専用のテスト証明書 | 最初の対応テスターがその経路を使う場合は別途登録する |
内部アプリ共有は内部テストとは別物です
Googleの内部アプリ共有のヘルプには「すべてのAPKがこのテスト証明書で再署名されます」とあります。この証明書は、Test and release > Internal testing > Internal app sharing > Uploaders and testers > Internal test certificate にあります。内部テストとクローズドテストのトラックでは、代わりにPlayのアプリ署名鍵が使われます。
フィンガープリントを自分で読み取る
自分のマシンでのビルドについては、Gradleの署名レポートですべてのバリアントのSHA-1とSHA-256を表示でき、keytoolでデバッグ用キーストアを直接読み取れます(求められたらキーストアのパスワードを入力してください)。
./gradlew signingReport
keytool -list -v -alias androiddebugkey -keystore ~/.android/debug.keystore
ローカルの署名レポートでは、Playから配信されたアプリに何が署名したかはわかりません。失敗しているビルドそのものを確認するには、クローズドテストからアプリを端末にインストールし、adbで取り出して、apksignerで証明書を表示します。Googleはapksignerについて「APKの署名証明書に関する情報」を表示すると説明しています。パッケージ名は置き換え、パスは最初のコマンドが表示したものを使ってください。
adb shell pm path com.example.app
adb pull /data/app/.../base.apk failing-play.apk
apksigner verify --print-certs failing-play.apk
SHA-1を追加したのにまだ失敗します
これ以上設定を変える前に、失敗しているAPKの証明書、最終的なアプリケーションID、クライアントIDを比較してください。次の手順表を上から順に進めます。各行で1つの層ずつ原因を除外していきます。
| 確認項目 | 比較する内容 | 判断 |
|---|---|---|
| 1. インストールされたアプリとトラック | 比較する内容テスターが実際にPlayからインストールしたものと、テストするつもりだったバージョン | 判断ローカルの署名レポートは、Playの署名者の証明にはなりません |
| 2. 証明書 | 比較する内容失敗しているPlayのAPKに対するapksigner verify --print-certsの出力と、登録した内容 |
判断必要な署名者をすべて登録し、インストール済みのユーザーにまだ使われている古い登録は残す |
| 3. 最終的なアプリケーションID | 比較する内容フレーバーの接尾辞を含む、ビルドしたバリアントのapplicationIdと、登録したパッケージ | 判断ソースのnamespaceは関係ありません |
| 4. プロジェクトとウェブクライアント | 比較する内容リリースビルドとバックエンドが実際に使っているプロジェクトとウェブクライアントID | 判断ここに誤字があると、フィンガープリントが正しくてもログインできません |
| 5. プロバイダとクライアントの存在 | 比較する内容プロバイダとしてGoogleが有効になっていること、およびその背後にあるAndroidクライアントとウェブクライアント | 判断別のプロジェクトがその組み合わせを使っている場合は、下の競合に関する説明を参照 |
| 6. エラーの種類 | 比較する内容ネイティブのコード10、Credential Managerのキャンセル、バックエンドでのトークン拒否、ブラウザのリダイレクト不一致 | 判断それぞれ別の分岐です。エラー表を参照してください |
| 7. フレームワークのリリース時の問題 | 比較する内容リソースの圧縮、解決されたライブラリのバージョン、初期化 | 判断やみくもなアップグレードやダウングレードではなく、変更履歴と確認済みの修正を頼りにする |
4行目は机上の話ではありません。2026年9月に報告されたExpoのケースでは、フィンガープリントを追加しても何も変わらず、原因はバックエンドが受け入れるクライアントIDの誤字でした。
複数の署名証明書、またはアップグレードした鍵
1つのアプリで、複数の署名IDの登録が必要になることがあります。Googleの現在のPlayアプリ署名のヘルプでは、3つのアプリ署名鍵を使うハイブリッド署名について説明しており、それぞれのフィンガープリントを登録するよう求めています。また、署名鍵をアップグレードしたアプリでも、古い鍵で署名されたインストールが残っている場合があります。インストールされているアプリが実際に持っている署名IDを登録し、まだ機能している古い登録は削除しないでください。鍵のローテーションはこの記事の範囲外であり、ログインの修正方法でもありません。
別のプロジェクトがこのパッケージとSHA-1をすでに使っている
Firebaseの競合に関するヘルプによると、パッケージ名とSHA-1の組み合わせは「すべてのFirebaseプロジェクトとGoogle Cloudプロジェクトを通じて一意である必要があります」。別のプロジェクトが保持しているためにコンソールがフィンガープリントを受け付けない場合は、何かを削除する前に、そのOAuthクライアントをどのプロジェクトが所有しているかを特定してください。競合の特定はGoogleのサポートに手伝ってもらえます。当て推量で有効なクライアントやプロジェクトを削除しないでください。
エラー10は12500、12501、canceledと同じですか?
いいえ。ログインの失敗をすべて同じ問題として扱う前に、正確なエラーと、それを出したライブラリを確認してください。Googleの共通ステータスコードのリファレンスでは、DEVELOPER_ERROR = 10を「アプリケーションの設定が誤っています」と定義しています。下のその他のコードは、Googleの旧play-services-auth 21.6.0 SDKのものです。
| 表示される内容 | 意味 | 次の手順 |
|---|---|---|
ApiException: 10またはDEVELOPER_ERROR |
意味アプリの設定エラー | 次の手順署名者、パッケージ、プロジェクト、クライアントIDを比較する |
12500 |
意味SIGN_IN_FAILED:「回復できないログインの失敗が発生しました(A non-recoverable sign in failure occurred)」 |
次の手順前後のログを読む。エラー10として扱わない |
12501 |
意味SIGN_IN_CANCELLED:「ログイン操作がキャンセルされました(Sign in action cancelled)」 |
次の手順ユーザーが本当にキャンセルしたのか、どのAPIが出したのかを確認する |
Credential ManagerまたはFlutterのcanceled |
意味本当のキャンセル、または設定の問題 | 次の手順例外の詳細と設定を調べる。診断したうえで、ユーザーに改めてログインを試してもらう |
NoCredentialException |
意味認証情報が返されなかった。証明書の問題とは判断できない | 次の手順登録だけでなく、アカウントの有無とリクエストの設定も確認する |
| Googleのトークンは取得できるが、バックエンドが拒否する | 意味Googleの認証情報を取得した後の段階の問題 | 次の手順バックエンドが受け入れるオーディエンスとクライアントIDを確認する |
redirect_uri_mismatch |
意味ブラウザのOAuthリダイレクトが、承認済みのURIと一致していない | 次の手順そのフローのコールバック設定を修正する |
| Playのリンクで「アイテムが見つかりませんでした」と表示される | 意味ログインではなく、インストールや対象条件の問題 | 次の手順アプリを利用できない場合の確認手順に従う |
旧Googleログイン(Google Sign-In)とCredential Manager
GoogleのPlay開発者サービスのリリースノートには、2024年4月16日にplay-services-baseでGoogle Sign-In APIが非推奨になったことが記載されており、Googleは2024年9月11日にCredential Managerへの移行を発表しました。その後、これらのAPIは2026年8月26日にplay-services-auth 22.0.0から、2026年9月17日にplay-services-base 18.11.0から削除され、「Removed the APIs related to Google Sign-in.」(Google Sign-in関連のAPIを削除)と記載されています。これはSDKの変更であり、すでにインストールされているアプリの提供終了日を定めたものではありません。新しいコードやアップグレードでは、Googleの移行ガイドに従ってください。
2つのAPIは失敗の仕方が異なります。Credential Managerにはエラー10がなく、そのトラブルシューティングガイドは「大量の"キャンセル"は、実際には設定ミスを示している可能性があります」と注意を促しています。つまりキャンセルは、設定の不具合のこともあれば本当のキャンセルのこともあり、NoCredentialExceptionはさらに別のシグナルです。
Flutter、React Native、Expo、Unityの確認事項
上で説明したネイティブの署名IDの確認はすべてのフレームワークに当てはまりますが、セットアップ、初期化、ビルド設定はフレームワークごとに異なります。使っているフレームワークの手順と、アプリで実際に解決されるライブラリのバージョンに合わせてください。
| フレームワーク | 固有の確認事項 | 思い込んではいけないこと |
|---|---|---|
| Flutter | 固有の確認事項Android実装のgoogle_sign_in_androidは、7.0.0でCredential Managerに移行しました。ウェブクライアントIDをserverClientIdとして渡します。7.2.16の変更履歴には「Keeps default_web_client_id resource from being stripped by resource shrinkers」(default_web_client_idリソースがリソース圧縮で削除されないようにする)とあり、リリース版だけで起きる失敗に関係します。 |
思い込んではいけないことcanceledの結果はすべてSHAの問題だ、あるいはダウングレードすれば必ず直る、という思い込み。 |
| React Native | 固有の確認事項ライブラリのどのAPIを使っているかを特定し、ウェブクライアントIDをwebClientIdとして渡して、実際のapplicationIdと失敗しているAPKを確認します。トラブルシューティングガイドには「Play Storeからダウンロードするとログインできない」という項目があり、設定チェック用のコマンド(下記)が用意されています。 |
思い込んではいけないことトラッカーでissueがクローズされていれば修正済みだ、という思い込み。 |
| Expo | 固有の確認事項ネイティブのGoogleログインには、開発ビルドまたはカスタムビルドが必要です。Expoのガイドには「これらのライブラリはカスタムのネイティブコードを必要とするため、Expo Goでは使用できません」とあります。EASやローカルの署名証明書と、Playのアプリ署名証明書は区別して扱ってください。 | 思い込んではいけないことExpo Goでリリース時の流れを再現できる、あるいは再ビルドすれば誤ったバックエンドのクライアントIDも直る、という思い込み。 |
| Unity | 固有の確認事項Firebase AuthenticationとUnity Authenticationのどちらを使うかを決め、サポートされているプラットフォーム連携でGoogle IDトークンを取得してから、そのバックエンドで交換します(FirebaseのUnityガイド)。GoogleによるUnity向けの古いログインのサンプルは、2026年4月19日にアーカイブされました。 | 思い込んではいけないことPlay Gamesのログインと、Googleアカウントでのログインが同じ連携だという思い込み。 |
React Nativeでは、ライブラリのメンテナーが提供している設定チェックを、プロジェクトのルートから実行できます。
npx @react-native-google-signin/config-doctor
Supabase、Facebook、Apple、Auth0では何が変わりますか?
どの証明書、クライアントID、コールバックを一致させる必要があるかは、プロバイダとログインのフローによって決まります。ネイティブのGoogleログインならGoogleのSHA-1が答えですが、ほかのプロバイダでは、ハッシュの種類や形式が違ったり、そもそも関係なかったりします。
| プロバイダまたはフロー | 一致させるもの | 設定する場所 |
|---|---|---|
| Firebaseを使ったネイティブのGoogleログイン | 一致させるものインストールされたパッケージとSHA-1、ウェブクライアント、プロバイダとしてのGoogleの有効化 | 設定する場所Firebaseのプロジェクトの設定にあるフィンガープリントと、Authentication |
| Supabaseを使ったネイティブのGoogleログイン | 一致させるものネイティブAndroidの署名IDとウェブクライアントID。Supabaseのガイドには「Androidアプリで使うのはウェブクライアントIDです」とあります。 | 設定する場所GoogleのAndroidクライアントとウェブクライアント、次にSupabaseのGoogleプロバイダの設定 |
| SupabaseのブラウザOAuth | 一致させるものウェブクライアント、Supabaseのコールバック、アプリに戻るためのリンク | 設定する場所Googleの承認済みリダイレクトURIと、Supabaseのリダイレクト設定。SHAの修正は当てはまりません |
| AndroidでのFacebookログイン | 一致させるもの署名証明書のSHA-1のバイト列から作るBase64のキーハッシュ。コロン区切りの16進数ではありません | 設定する場所Facebookのアプリ設定にあるAndroidのキーハッシュ(経路はExpoのFacebookガイドの記載による) |
| AndroidでのAppleのウェブログイン | 一致させるものServices ID、ドメイン、リターンURL | 設定する場所AppleのSign in with Appleのウェブ設定。GoogleのDEVELOPER_ERRORの仕組みとは無関係です |
| AndroidでFirebase経由のAppleログイン | 一致させるものAppleの設定と、アプリのSHA-1 | 設定する場所FirebaseのAppleガイド:「まだ指定していない場合は、アプリのSHA-1フィンガープリントを指定してください。」 |
| AndroidでのAuth0 | 一致させるもの許可されたコールバックURLとアプリのスキーム、使う場合はアプリリンクの署名ID | 設定する場所Auth0のアプリケーション設定。Android SDKのreadmeでは、アプリリンクの設定にSHA-256のキーハッシュを使います |
| Firebaseの電話番号認証 | 一致させるものPlay IntegrityにはSHA-256、reCAPTCHAのフォールバックにはSHA-1 | 設定する場所Firebaseの電話番号認証:Googleログインとは別のフローです |
ログインをWebViewに移さないでください
Googleログインを埋め込みのWebView経由にするのは回避策になりません。GoogleのOAuth 2.0ポリシーでは、デベロッパーは「Google OAuth 2.0の承認リクエストを埋め込みのユーザーエージェントに送ってはならない」と定められています。
テスターは開発者に何を送ればよいですか?
役に立つ報告とは、失敗しているPlayのビルドと、ログインが止まる正確な箇所がわかるものです。テスターが何度試してもOAuthの登録は直らないため、求められるのは粘り強さではなく証拠です。このテンプレートをコピーしてテスターに送ってください。
アプリとPlayのテスト用リンク:
インストールしたアプリのバージョンまたはビルド:
インストール元:Playのクローズドテスト / その他の経路
端末とAndroidのバージョン:
日付、時刻、タイムゾーン:
正確なエラーの文言、または個人情報を伏せたスクリーンショット:
止まった箇所:アカウント選択の前 / アカウントを選んだ後 / アプリに戻った後
ほかのログイン方法ならアプリを開けたか:
再テストの結果とバージョン:
修正している間も、テスターにはテストへのオプトインを続けてもらってください。パスワード、OAuthトークン、秘密鍵、Play Consoleへのアクセス権は決して求めないでください。変更後は、同じテスターにログインが必要な機能を開いてもらい、ログアウトしてから再度ログインしてもらって、そのバージョンと結果を記録してもらいます。
エラー10はクローズドテストや製品版へのアクセスに影響しますか?
ログインの設定エラーは、テストへの登録とは別の問題です。エラー10はPlayのポリシーによる却下コードではなく、私たちが確認した範囲では、これでテスターのオプトイン期間がリセットされるとするGoogleのルールはありません。Googleのテスト要件のページでは、クローズドテスト中にアプリを改善することが推奨されています。テスターにはオプトインを続けてもらい、修正は同じクローズドテストのトラックに配信してください。これは公開されているルールの読み取りであり、あらゆるケースを保証するものではありません。
とはいえ、ログインが壊れていることは問題です。Google Playの機能に関するポリシーには「クラッシュ、強制終了、フリーズなど、正常に機能しないアプリは許可されません」とあり、ログインの壁があるとテスターは本来テストすべき機能にたどり着けません。製品版へのアクセスを申請する前に修正し、審査担当者には実際にログインできる情報を渡してください。すでに審査結果が届いている場合は、Broken Functionalityによる却下をご覧ください。
参考までに:2023年11月13日以降に作成された個人用デベロッパーアカウントでは、そのアプリの製品版へのアクセスを申請する前に、12人以上のテスターが14日間連続でオプトインしている必要があります。申請後については、Googleは「審査には通常7日以内かかりますが、それ以上かかる場合もあります」としています。テスターが人数に数えられていない場合は、ログインに手を付ける前に招待の方法を確認してください。
14日間のテストに実在のテスターが必要ですか?
テスターにOAuthの登録は直せないため、まずはログインが動くようにしてください。動くようになったら、PrimeTestLabが実在のテスター12人以上をご用意します。テスターは実機のAndroidスマートフォンにPlayのビルドをインストールし、14日間を通してオプトインを続けます。料金は$19.99から(別途サービス手数料5%)です。テスト期間を終えてもGoogleから製品版へのアクセスが認められなかった場合は、無料再テストまたは全額返金をお選びいただけます。テスター12人のクローズドテストの仕組みを見る。
よくある質問
デバッグではGoogleログインが動くのに、クローズドテストで動かないのはなぜですか?
デバッグ用のAPKとGoogle Playからダウンロードしたアプリは、異なる証明書で署名されている場合があります。そのため、デバッグ用のフィンガープリントを登録してもPlayのビルドは設定されません。まずPlayアプリ署名のSHA-1から始め、次にリリースビルドの最終的なパッケージ名と、アプリが実際に使っているクライアントIDを確認してください。
Playアプリ署名のSHA-1は今どこにありますか?
Play Consoleでアプリの「Protected with Play」ページを開きます。Googleのヘルプでは「Play Store distribution」から「Go to Play app signing」と説明されていますが、Googleの現在の別の文書では「Play Store protection」と「Manage Play app signing」と呼ばれています。「App signing key certificate」(アプリ署名鍵の証明書)のセクションを開いてSHA-1をコピーし、アプリに追加の鍵が表示されていればそれも確認してください。
GoogleログインにはSHA-1とSHA-256のどちらが必要ですか?
GoogleのAndroid用OAuthクライアントは、パッケージ名とSHA-1の署名証明書フィンガープリントでアプリを識別します。SHA-256がその欄の代わりになることはありません。ほかのサービスにはそれぞれの要件があり、たとえばFirebaseの電話番号認証では、Play IntegrityにSHA-256、reCAPTCHAのフォールバックにSHA-1を使います。アプリが使うフローに合わせて、サービスごとに設定してください。
SHA-1はもう追加しました。次に何を確認すればよいですか?
それがアップロード鍵やデバッグ鍵のものではなく、Playからインストールされたアプリのものかを確認してください。次に、最終的なアプリケーションID、FirebaseまたはCloudのプロジェクト、ウェブクライアントIDを比較します。アプリに複数の署名証明書がある場合は、それらも確認してください。バックエンドが受け入れるクライアントIDに誤字があると、フィンガープリントが正しくてもログインできなくなります。
フィンガープリントを追加したら、AABをもう一度アップロードする必要がありますか?
必ずしも必要ではありません。FirebaseやGoogle Cloudでの登録だけの修正で、インストール済みのアプリのまま直ったという開発者の報告があります。クライアントID、設定ファイル、コード、依存関係を変更した場合は、新しいビルドでテスターに届ける必要があります。何を変更したかを確認し、診断しないまま何度も再ビルドするのではなく、Playから実際にインストールされたアプリで検証してください。
新しいフィンガープリントが有効になるまでどのくらいかかりますか?
Googleはフィンガープリントに特化した反映時間を公表しておらず、私たちが確認した開発者のスレッドでも測定されていません。正しい設定を保存して、もう一度試してください。それでも失敗する場合は、決まった時間待つのではなく、インストールされた証明書とクライアントの設定を確認してください。待っても不一致は直らないからです。
キャンセルしていないのに、canceledと表示されるのはなぜですか?
Credential Managerやフレームワークの連携の中には、設定や認可の問題をキャンセルとして報告するものがあります。ただし、本当にキャンセルされた場合もあります。設定を変える前に、例外の種類とメッセージを記録し、使っているフレームワークのトラブルシューティングガイドを確認して、現在のAPIと旧来の12501 SIGN_IN_CANCELLEDステータスを区別してください。
serverClientIdに入れるのはAndroidのクライアントIDですか?
いいえ。ドキュメントに記載されたネイティブのGoogle連携では、serverClientIdまたはwebClientIdは、トークンのリクエストに使うウェブアプリケーションのOAuthクライアントです。Androidクライアントは、代わりにパッケージと署名証明書を登録するものです。両方を設定し、クライアントIDをやみくもに入れ替えるのではなく、バックエンドが意図したトークンのオーディエンスを受け入れているかを確認してください。
エラー10で14日間のクローズドテストはやり直しになりますか?
私たちが確認した範囲では、このエラーでオプトイン期間がリセットされるとするGoogleのルールはなく、Googleはクローズドテスト中の改善を推奨しています。テスターには登録を続けてもらい、既存のトラックで修正してください。ただし、それはアプリの準備ができているという意味ではありません。ログインの壁があると有効なテストができず、申請前に直すべき機能上の問題が残る可能性があります。
テスターには何を送ってもらえばよいですか?
インストールしたバージョン、Playのテスト用リンク、端末とAndroidのバージョン、正確なエラー、ログインが止まった手順を送ってもらいましょう。個人情報を伏せたスクリーンショットや短い画面録画があると役立ちます。修正後は同じテスターに、認証情報を一切共有せずに、ログインが必要な機能を使ってもらい、ログアウトして再度ログインしてもらってください。
まとめ
まとめ
Googleログインのエラー10はアプリの設定ミスを意味し、Playから配信されたアプリだけが失敗する場合は、まず署名証明書を確認します。Protected with Playからアプリ署名鍵のSHA-1をコピーし、アプリが使っているのと同じFirebaseまたはGoogle Cloudのプロジェクトに、ビルドの最終的なパッケージ名で登録します。serverClientIdにはウェブクライアントIDを指定したままにし、テスターがインストールしたビルドで、2回目のログインも含めて再テストしてください。それでも失敗する場合は、ほかの設定を変える前に、インストールされたAPKの証明書、アプリケーションID、クライアントIDを比較してください。
出典(2026年10月16日に確認)
このページで最も変わりやすい情報は、Play ConsoleとFirebaseのメニューのラベルです。上記の経路がお使いのコンソールと一致しなくなった場合は、Playアプリ署名はProtected with Playの中、フィンガープリントはFirebaseのプロジェクトの設定にあるAndroidアプリの項目を探してください。