8

我無法成功地給做,我也跟着的指示在火力地堡文檔以下步驟:如何將多個身份驗證提供程序鏈接到Firebase帳戶?

  1. 使用現有的身份驗證提供者簽名的使用(我的情況:Facebook的)。
  2. 完成新身份驗證提供高達登錄流程,但不包括調用的Auth.signInWith方法之一(我的情況:我要鏈接的電子郵件&密碼和谷歌的OAuth)。所以這是我不清楚的一步,我使用var provider = new firebase.auth.GoogleAuthProvider();創建了一個新的提供商,我沒有做Firebase.auth().signInWithPopup(provider)
  3. 然後讓authcredential爲谷歌我跑var credential = firebase.auth.GoogleAuthProvider.credential( googleUser.getAuthResponse().id_token);我得到一個未定義的googleUser錯誤)這個錯誤似乎是恰當的,因爲我還沒有簽約使用谷歌的Oauth但那是第二步驟陳述了(不簽到)
  4. 然後這條命令與Facebook提供商的當前用戶鏈接auth.currentUser.link(credential)

我的理解是當前用戶需要鏈接到我現有的提供者(Facebook)。似乎從未計算出Google的憑證變量。任何具有功能性代碼示例的人都會很有幫助。

回答

8

如果您想手動將Google和電子郵件/通行證帳戶鏈接到現有的僅限Facebook的Firebase用戶,您可以執行以下操作: 首先,用戶應登錄Facebook。 鏈接谷歌的用戶:

var provider = new firebase.auth.GoogleAuthProvider(); 
auth.currentUser.linkWithPopup(provider); 

然後鏈接的電子郵件/通帳戶:

auth.currentUser.linkWithCredential(firebase.auth.EmailAuthProvider.credential(auth.currentUser.email, 'password')) 

所有這些帳戶鏈接必須是新的,尚未聯繫。

+0

你提到的手動,有沒有一個不同的更自動的方式來鏈接提供商? – jasan

+1

不完全。我想我沒有解釋得很好。我的意思是手動,因爲開發人員會根據一些需求(需要谷歌提供商訪問谷歌日曆,升級匿名用戶等)選擇鏈接。另一種情況是後端服務器出於安全原因需要它。例如,您使用google返回[email protected],登錄到firebase。用戶然後使用Facebook返回相同的電子郵件[email protected]在單獨的設備上登錄。在這種情況下,會出現證書已被使用的錯誤。在這種情況下,您需要鏈接帳戶才能鏈接兩個提供商。 – bojeil

+0

@bojeil我看到你使用了'linkWithPopup()'。然後,[Firebase教程]中提到的linkWithCredential()是什麼(https://firebase.google.com/docs/auth/android/account-linking#link-auth-provider-credentials-to-a-user -帳戶)? –

相關問題