2012-08-01 50 views
1

我需要在金字塔的API和我認爲的oauth2將是很好的實現不是推倒重來,已經安裝pyramid_oauth2包,但不知道文檔或例子。有人知道任何好資源?一個github項目或oauth2服務提供商的東西會很好。pyramid_oauth2服務提供商文檔或實例

回答

1

如果你在談論我的包,這裏是從我的網站樣本。它仍然非常實驗性,但它應該與Facebook和其他一些oauth2提供商一起使用。不幸的是,twitter實際上只是oauth1.0,這是一個問題。

所以你需要包括pyramid_oauth2像

config.include('pyramid_oauth2') 

或者config.ini文件中。

然後你就可以添加其他地方被列入配置後:

config.add_oauth2_provider(
    Provider(
     'vkontakte', 
     'client_id', 
     'client_secret', 
     'https://api.vk.com/oauth/authorize', 
     'https://oauth.vk.com/access_token' 
    ) 
) 

這將創造/oauth/vkontakte/authenticate的路徑。這是請求開始重定向流程的地方。然後它將重定向到authorize url,並且它還會創建一個接收代碼的/oauth/vkontakte/callback。然後它將該代碼發送回access_token路徑。

如果有什麼不工作可隨意報告一些問題,可以發送額外的參數到Provider的構造函數,如作用域等。此時這些參數將發送到服務器的所有請求。

哦,你必須爲提供者提供一個回調函數。我會用一個回調等

如果它仍然是不明確的,我可以與Facebook一小示例應用程序,並在今天或明天推在github的例子更新了答案。

該回調只是一個可調用的接收requestdata,訪問令牌應包含在數據中。

我記住,你如何獲得訪問令牌應該是直截了當的,一旦你收到訪問令牌,應該可以執行一些標準回調來註冊一個oauth api等等。我相信不是每個人都只是在爲像Facebook連接等網站進行身份驗證纔會尋找oauth。有人可能有興趣使用access_token不僅僅是auth。此外,由於金字塔不是關於sqlalchemy和其他數據庫,它不強制執行任何操作。換句話說,用ZODB實現它,SQLAlchemy應該很容易。

我相信流動實際上是非常簡單的,我沒有實際(我猜)實施的oauth2但正確的當前客戶端流量。某些屬性缺失,如grant_type等。它們可以作爲額外的參數傳遞,但取決於oauth2服務器,它可能無法在任何地方正常工作。

順便說一句,我在找供應商添加到ini文件,使他們可以從那裏而不是在代碼中加載。這樣,你就可以保持開發不同的應用程序,督促等

+1

感謝包,不錯的工作,感謝您的詳細答覆,但我猜這是客戶端...,我的意思是服務器一邊,我正在做的API,我發現最接近的文章是這一個:http://philipsoutham.com/post/2172924723/two-legged-oauth-in-python – 2012-08-03 15:47:23

+0

請記住,python-oauth2實際上是一個oauth1.0包,據我所知。它被稱爲2,因爲它是python-oauth的替代品。在我閱讀文檔後,我沒有發現oauth2的任何內容,這就是爲什麼我在上面創建了這個包。不能全時工作,但可能很快就會做,因爲我可能很快需要一個oauth2服務器 – 2012-08-09 10:38:25

+0

我剛剛閱讀這篇有趣的文章,你應該看看,如果不是已經:http://pydanny.com/the-sorry- state-of-python-oauth-providers.html,也許有些人也可以在項目 – 2012-08-10 14:40:50