このパッケージ名と SHA-1 の組み合わせを持つ OAuth2 クライアントは、別のプロジェクトに既に存在します

このエラー メッセージが表示される原因

このエラーは、指定したパッケージ名と SHA-1 を持つ OAuth 2.0 クライアント ID が別の Firebase または Google Cloud プロジェクトに含まれている場合に発生します。Firebase console で Firebase を Android アプリケーションに追加すると、そのアプリの Google OAuth 2.0 クライアント ID が作成されます。この ID は一部の Google API(App Invites や Drive API など)でアプリを認証するために使用されます。セキュリティ上の理由から、OAuth 2.0 クライアント ID の作成に使用されるパッケージ名と SHA-1 フィンガープリントの組み合わせは、Firebase と Google Cloud のすべてのプロジェクトで一意である必要があります。

このエラーによるアプリケーションへの影響

現在のところ、Android アプリのパッケージ名と SHA-1 の設定が必要な Firebase 機能は 2 つあります。

  • Invites: SHA-1 を指定しないと機能しません。現在のところ、別のプロジェクトの SHA-1 を使用する方法はありません。
  • Authentication: Google を認証プロバイダとして使用するには、ログイン設定で既存のプロジェクトのクライアント ID を手動でホワイトリストに登録する必要があります。

対処方法

Firebase Invites または Google を Firebase Auth ログイン プロバイダとして使用していない場合、何もする必要はありません。これらのいずれかの機能を使用している場合は、次のうちどのシナリオがご自分の状況に最も当てはまるかをご確認ください。

競合している OAuth 2.0 クライアント ID がどの Google Cloud プロジェクトに含まれているかわかっていて、Firebase プロジェクトを削除してもかまわない、または Invites を使用する必要がある。
Firebase アプリが既に運用中の場合や、残しておきたい Analytics や Crash のデータがある場合はこの方法は推奨されません。

このプロジェクトを作成したばかりの場合や、Firebase をアプリに追加して間もない場合、最も簡単な方法は、プロジェクトを削除して、代わりに既存の Google プロジェクトをインポートすることです。手順は次のとおりです。

  1. Firebase プロジェクトを削除します。この操作を行うと、プロジェクトに関連付けられたすべてのデータが削除され、元に戻すことはできません。
  2. Firebase console に移動します。
  3. [Google プロジェクトをインポート] をクリックします。
  4. OAuth 2.0 クライアント ID を含む既存のプロジェクトを選択し、[Firebase を追加] をクリックします。
既存のプロジェクトはインポートしたくなく、Invites は使用していない。

既存のプロジェクトはインポートできず、Invites を使用する予定がない場合は、既存の OAuth 2.0 クライアント ID を手動でホワイトリストに登録して Google をログイン プロバイダとして使用できます。

まず、既存のプロジェクトの OAuth 2.0 クライアント ID を探します。手順は次のとおりです。

  1. Google Cloud Console の [認証情報] ページに移動します。OAuth 2.0 クライアント ID を含むプロジェクトが自動的に開かない場合は、ページ右上のプルダウン メニューから選択します。
  2. [OAuth 2.0 クライアント ID] セクションで、SHA-1 を含むクライアント名と Firebase プロジェクトで使用したパッケージ名を見つけます。どれが目的の名前かわからない場合は、クライアントの名前をクリックして詳細を確認します。
  3. 正しいクライアント名を特定できたら、[クライアント ID] 列の値を全部コピーします。

次に、Google をログイン プロバイダとして使用するため、このクライアント ID をホワイトリストに登録します。手順は次のとおりです。

  1. Firebase console に移動し、プロジェクトを選択します。
  2. 左側のメニューから [Auth] を選択します。
  3. [ログイン方法] タブを選択します。
  4. [ログイン方法] ページで、[プロバイダにログイン] カードの [Google] をクリックします。
  5. [外部プロジェクトの ID をホワイトリストに追加します(オプション)] を展開します。
  6. Cloud Console のクライアント ID をテキスト フィールドに貼り付けて [追加] をクリックします。
競合している OAuth 2.0 クライアント ID がどのプロジェクトに含まれているかわからない。

競合している OAuth 2.0 クライアント ID がどのプロジェクトに含まれているかわからない場合は、次の手順に沿って特定します。

  1. Google Cloud Console の [認証情報] ページに移動します。
  2. [OAuth 2.0 クライアント ID] セクションでクライアント名をクリックして、クライアント ID の作成に使用された SHA-1 とパッケージ名を確認します。目的のクライアント名が見つかるまで、すべてのクライアント名に対してこの手順を繰り返します。

目的の SHA-1 とパッケージ名を含むクライアント名が見つからない場合は、ページ右上のプルダウン メニューから別のプロジェクトを選択し、上記の手順を再度繰り返します。

場合によっては、自分が所有していないプロジェクト内に目的の OAuth 2.0 クライアントがあることもあります。競合しているプロジェクトを特定できない場合は、Firebase サポートにお問い合わせの上、競合しているパッケージ名と SHA-1 フィンガープリントをお知らせください。

この記事は役に立ちましたか?
改善できる点がありましたらお聞かせください。