2013-10-04 65 views
1

我試圖將我的自定義api連接到在plone網站上使用pmr2.oauth提供程序並使用oauthV1的plone網站。從請求臨時密鑰到接收oauth訪問令牌都一切順利。從pmr2-oauth(plone包中)進入內容類型範圍mangager的內容

但是,當我嘗試訪問資源時,我得到一個無效的範圍。我已被告知要在pmr2.oauth包中填寫內容類型作用域管理器,我必須將以下每個門戶類型的映射填充到允許的子路徑列表中:Plone站點,集合,文件,文件夾,管理器文件夾,頁面,頁面和子網站。

但我不知道在這裏填寫什麼,所以我希望也許你們可以幫助我。

回答

1

包擁有者在這裏,首先我必須道歉,並說我可以更好地證明這一點(確定它通過doctests記錄,但它可以做得更好)!

您需要填寫的內容是您希望訪問該特定內容類型的視圖。例如,如果您希望顯示集合中所有項目的列表,則可以確定該視圖的名稱(在本例中爲atct_topic_view)。對於標準頁面,它將是document_view。也就是說,OAuth通常針對通常以更簡潔的格式(例如json)進行通信的Web服務,因此開發人員可以開發特定於某些現有(或自定義)Plone內容類型的新視圖,然後將這些視圖添加到映射可用。

最後,映射基本上是端點,再加上一個可選的子路徑,它可以是通配符。在編寫時,爲自定義子路徑指定通配符並不意味着可以使用根父視圖,因此,假設您有一個自定義下載視圖,可讓用戶列出鏈接到實際內容中的子路徑的格式,您可以執行一些操作像這樣:

Collection: 

download_feed 
download_feed/* 

是否會讓現有的download_feed查看集合內容類型中,然後內的所有子路徑(一般通過自定義視圖實現zope.publisher.interfaces.IPublishTraverse提供)。

或者,您可以編寫自己的ScopeManager。只需創建一個從pmr2.oauth.scope.BaseScopeManager(或BTreeScopeManager)繼承一個類中,實現所有的方法(和測試),然後你的代碼內或與這樣的ZCML註冊這個:

<adapter 
    for="zope.annotation.interfaces.IAnnotatable 
     your.app.interfaces.IAppLayer" 
    factory="your.app.ScopeManager" 
    provides="pmr2.oauth.interfaces.IScopeManager" 
    /> 

應然後使用您自己的覆蓋默認(Portal)基於內容類型的範圍管理器。