2015-10-27 60 views
1

這個問題的簡短版本是:如果您使用Firebase的OAuth功能獲取用戶的電子郵件地址,您是否仍然需要自己確認/驗證用戶的電子郵件地址?Firebase - 無法相信OAuth返回的詳細信息?

使用OAuth的一個常見好處是 - 根據OAuth提供商 - 您可以獲得確認的電子郵件地址,但在使用Firebase進行Web應用時,情況確實如此。與AngularJS的綁定?

用戶驗證後,似乎有兩個數據對象 - 可用於客戶端的authData和可用於服務器端的安全規則的auth。雖然authData包含名稱和電子郵件等詳細信息,但auth僅包含Firebase uidprovider。因此,如果我要獲得該用戶的電子郵件地址,它必須由客戶提供,因此不能(在理論上)被信任?

根據我的火力地堡的文檔的理解,如果我使用的GitHub的OAuth我的應用程序,我需要做類似如下:

  1. 獲取用戶的登錄/與火力地堡創建賬戶/ GitHub的
  2. 客戶JS檢索從GitHub的OAuth迴應的電子郵件地址
  3. 客戶JS「提交」這封電子郵件確認 - 可以做多種方式
  4. 電子郵件地址應與狀態保存在火力地堡「未經證實的」(如一個字段只讀t用戶)
  5. 我需要我自己的服務器端邏輯來處理這樣的電子郵件提交併發送確認電子郵件請求,例如,通過類似山魈
  6. 我需要更多的服務器端邏輯接收點擊確認和標記中的電子郵件地址爲「確認」火力地堡

因此火力地堡能幫助我的步驟1-3,但第4步-6需要通過我自己的服務器端代碼來完成?

因此,對這個問題的回答是「是/否」,但有一些理由/解釋!

+0

是的。這一切看起來正確。 – Kato

回答

1

感謝@Kato確認我在問題中的假設是正確的,所以我會明確提供這個答案,並提供一個我沒有想到的替代方案。

所以簡短的回答是,「當您使用Firebase OAuth時,您需要自己獲取或驗證用戶的電子郵件」,並且上面列出的步驟是單向的。

另一種方法,仍然需要服務器端的代碼,但需要發送電子郵件,將有用戶寫自己的禮物給他們的用戶表項,然後讓服務器端代碼中使用該檢索經過驗證的電子郵件來自供應商自己的地址。例如使用GitHub授權令牌和適當的範圍,您可以檢索用戶已驗證的電子郵件,而不需要再次向您驗證。