2017-06-17 98 views
0

我完全不熟悉OAuth,並且存在工作流問題。我正在使用node/express/passport,並且在請求我的/auth/google端點時成功設置了應用程序以重定向。OAuth 2 - 如何在不提供權限的情況下登錄

但是,我始終將其路由到Google權限頁面,我必須讓我的應用程序訪問我的信息。我可以登錄/註銷的機制是什麼,而無需每次都提供訪問權限?實質上,我如何讓用戶無需再次請求權限就可以登錄,但仍然讓他們通過Google登錄?

+0

我會建議讀這篇文章,http://nodexperts.com/blog/salesforce-oauth-using-nodejs/, 這不是谷歌,但OAuth的你會得到一些關於它的基本知識和OAuth如何工作的 –

+0

@ myke_11j謝謝我一定會讀它! – Corbfon

回答

0

典型的流程是讓用戶在Google上登錄,就像你在做什麼一樣。一旦他們確認了您的應用程序請求的範圍,Google就可以爲您的服務器提供一個授權代碼,該授權代碼可以在未來存儲和使用的訪問/刷新令牌進行交易。但是,護照應該從你身上抽出很多來回。你在利用this庫嗎?如果是這樣,你是否將訪問和刷新令牌存儲在你自己的本地數據庫中以供重用(或者在至少刷新令牌,以便在需要時可以獲得新的有效訪問令牌)?

+0

所以這似乎是一條有用的路徑!我所做的任何教程都沒有提到實際使用訪問或刷新令牌。我正在使用您鏈接的圖書館。我的問題是現在什麼時候/如何保存訪問和刷新令牌,以及如何將它們提供給護照 – Corbfon

+0

這取決於你打算如何使用令牌。如果這只是讓用戶使用Google登錄的一種方式,那麼您應該考慮使用指向數據庫中用戶的鏈接的會話,以及存儲與該用戶關聯的刷新/訪問令牌的位置。由於某種原因,該示例沒有顯示存儲令牌,但如果您不希望用戶每次都登錄,則必須執行此操作。安全地,最好。然後,您需要使用[this](https://developers.google.com/identity/protocols/OAuth2UserAgent#validate-access-token)等來驗證鏈接的令牌。 – dvlsg

+0

您還需要查看'passport'中的'deserializeUser'和'serializeUser'方法,因爲這些方法通常是您在'passport'的上下文中將用戶進出數據庫的方式。 [Docs here](http://passportjs.org/docs/configure),但您必須向下滾動一下才能看到這些方法。 – dvlsg

相關問題