其他專案中已有與這個套件名稱和 SHA-1 組合相同的 OAuth2 用戶端

為什麼我會看到這則訊息?

如果系統偵測到其他 Firebase 或 Google Cloud 專案中 OAuth 2.0 用戶端 ID 的套件名稱和 SHA-1 與您指定的相同,就會發生這個錯誤。您在 Firebase 主控台中將 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 功能:

  • 邀請:如果使用者未提供 SHA-1,此功能無法正常運作。系統目前尚不支援使用其他專案的 SHA-1。
  • 驗證:如要使用 Google 提供的驗證服務,您必須在 Sign-In 設定中將現有專案的用戶端 ID 手動加入許可清單。

該怎麼做?

如果您未使用 Firebase 邀請或將 Google 做為 Firebase 驗證登入供應商,就不需採取任何行動。如果您使用上述其中一項功能,請參考以下最符合您情況的案例:

我知道哪個 Google Cloud 專案包含衝突的 OAuth 2.0 用戶端 ID,即使要刪除我的 Firebase 專案或必須使用邀請功能也沒關係。
如果您的 Firebase 應用程式已正式推出,或者您有想要保留的數據分析或當機資料,我們不建議採取這種做法。

如果您剛才建立這個專案,或者將 Firebase 加入應用程式沒有多久,最簡單的做法是刪除專案,然後匯入現有的 Google 專案。如要這麼做,請按照以下步驟進行:

  1. 刪除 Firebase 專案。這項操作執行後就無法復原,而且會一併刪除與專案相關的所有資料。
  2. 前往 Firebase 主控台
  3. 按一下 [Import Google project]。
  4. 選取包含 OAuth 2.0 用戶端 ID 的現有專案,然後按一下 [Add Firebase]。
我不想匯入現有的專案,而且也沒有使用「邀請」功能。

如果您無法匯入現有的專案,而且也不打算使用「邀請」功能,那麼可將現有的 OAuth 2.0 用戶端 ID 手動加入許可清單,日後就能使用 Google 提供的登入服務。

請先找出現有專案的 OAuth 2.0 用戶端 ID,步驟如下:

  1. 前往 Google Cloud Console 的憑證頁面。如果系統沒有自動開啟包含 OAuth 2.0 用戶端 ID 的專案,請在頁面右上角的下拉式選單中選取專案。
  2. 在「OAuth 2.0 client IDs」部分中,找出包含用於 Firebase 專案的 SHA-1 和套件名稱的用戶端名稱。如果您不確定哪個用戶端才是正確的,只要按一下用戶端名稱即可查看詳情。
  3. 找到正確的用戶端名稱後,請複製「Client ID」欄中的完整值。

接下來,請將這個用戶端 ID 加入許可清單,即可使用 Google 提供的登入服務。如要這麼做,請按照以下步驟進行:

  1. 前往 Firebase 主控台,選取您的專案。
  2. 選取左側選單中的 [Auth]。
  3. 選取 [Sign in method] 標籤。
  4. 在「Sign in method」頁面上,按一下 Sign in providers 資訊卡中的 [Google]。
  5. 展開 [Whitelist client IDs from external projects option]。
  6. 將 Cloud Console 中的用戶端 ID 貼到文字欄位中,然後按一下 [Add]。
我不知道哪個專案包含衝突的 OAuth 2.0 用戶端 ID。

如果您不知道哪個專案包含衝突的 OAuth 2.0 用戶端 ID,請執行下列步驟,看看能否幫您找到專案:

  1. 前往 Google Cloud Console 的憑證頁面
  2. 在「OAuth 2.0 client IDs」部分中,按一下用戶端名稱,即可看到建立用戶端 ID 時使用的 SHA-1 和套件名稱。請重複這個步驟,直到您找出正確的用戶端名稱或查看過所有用戶端資訊為止。

如果找不到包含相符的 SHA-1 和套件名稱的用戶端名稱,請在頁面右上角的下拉式選單中選取其他專案,然後重複以上步驟。

在某些情況下,OAuth 2.0 用戶端可能位於並非由您擁有的專案中。如果找不到衝突的專案,請與 Firebase 支援小組聯絡,將發生衝突的套件名稱和 SHA-1 指紋提供給他們。

這對您有幫助嗎?
我們應如何改進呢?