使用 Flask 和 rauth 進行 Github Oauth 登陸

發表於2016-02-02

最近我研究了一下Flask的OAuth庫。情況並不樂觀,大部分的包都已過時並且不再被支援了。大家熟知的Flask-Oauth基本上已經被廢棄了,我也不推薦依賴這個庫。有趣的是OAuth本身其實是很簡單的,認證之後你會得到一個訪問token,你只需將其作為GET引數或者作為request的特殊的header即可。也許其他的OAuth提供者需要更復雜的邏輯,但是Github僅此就足夠。

我在StackOverflow上請教了如何解決Flask-OAuth的問題 ,從rauth的作者那裡得到回答,他建議試一下他寫的庫。本文就是對他及開源社群的回報。我寫了這個真實的例子,告訴你如何使用Flask、rauth、Github和會話來對你的站點的使用者進行認證。

首先你需要設定好本地的環境。你需要安裝好python、pip和virtualenv。接下來對環境進行設定:

如果要執行我的例子,你還需要安裝Sqlite的python繫結,SQLAlchemy會需要它:

pip會安裝所有需要的依賴,所以你的環境已經就緒了。

現在你需要到Github設定頁面裡找到 Applications sections,為你設定好一個新的應用。下圖顯示了在我的配置區域。

image

 

下面是程式碼,主模組如下:

模板:

啟動後將建立資料庫:

在瀏覽器開啟網站後,將在 session 儲存 login.access_token,這是不安全的,但作為例子已經足夠了。實際的網站中你可以這樣使用:

相關連結:

相關文章