2017-08-14 112 views
1

我目前正試圖實現與谷歌登錄作爲一個選項,使用戶更容易登錄和創建用戶。使用Google登錄,使用Ruby on Rails API和React

我有一個使用devise登錄的Rails API,以及一個使用React的前端,它向Rails 5 API發出請求。

林不知道如果我必須在後端或前端做所有這些登錄,我最大的問題是創建一個用戶登錄谷歌時,因爲我不能創建一個沒有密碼的用戶。

我從來沒有創建過這種登錄系統,所以我不確定它是如何工作的,我相信我必須在後端實現所有使用google oauth gem,但是我想知道是否有人有提示如何做到這一點。

我應該只使用反應組件嗎?只有Rails寶石?或者兩者都是正確答案?

謝謝。

回答

1

我可以給你方向歸檔這個。

首先,您必須弄清楚您將在OAuth提供程序中使用哪個授權流程。

有四種方法可以做到這一點,我只列出了最常見的兩種方法。

  1. 代碼格蘭特流量(用於網站omniauth,谷歌或類似的寶石用這種方式)

  2. 隱格蘭特流量(本機應用程序,這意味着你必須做在前端的OAuth的流量)

如果你要實現API服務器,你應該考慮第二種方法。

因爲API服務器應該是無狀態的,所以第一種方式需要session來保存OAuth流的狀態。

此外,devise是不是一個好主意來實現API服務器,你應該考慮jwt或類似令牌的身份驗證。

雖然您可以在rails API中啓用會話存儲以使用deviseomniauth-series

如果您想在前端執行所有OAuth,請使用第二種方法。

或者您可以簡單地在您的反應組件中添加按鈕鏈接到您的OAuth回調鏈接,然後您的Web服務器將處理您的OAuth流(這是第一種方式)。

考慮到您的情況後,我建議您使用第一種方式。

因爲有關於deviseomniauth-series的許多資源,您可以在互聯網上找到。