从pmr2oauth(plone中的一个包)进入内容类型scope manager的内容

2024-06-25 23:16:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用plone网站上的pmr2.oauth提供程序并使用oauthV1将我的自定义api连接到plone网站。从请求临时密钥到接收oauth访问令牌,一切都进展顺利。你知道吗

但是当我尝试访问资源时,得到的作用域无效。我被告知要在pmr2.oauth包中填写内容类型scope manager,我必须填写以下每个门户类型到允许的子路径列表的映射:Plone site、Collection、File、Folder、manager Folder、Page、Page和subsite。你知道吗

但我不知道该填什么,所以我希望你们能帮我。你知道吗


Tags: 程序api类型网站plonepage密钥manager
1条回答
网友
1楼 · 发布于 2024-06-25 23:16:26

包所有者在这里,首先我必须道歉,并说我可能可以更好地记录这一点(当然它是通过doctests记录,但它可以做得更好)!你知道吗

您需要填充的是您要访问的特定内容类型的视图。例如,如果您希望显示集合中所有项的列表,您应该知道视图的名称(在本例中为atct\u topic\u view)。对于标准页面,它将是文档视图。也就是说,OAuth通常针对那些通常通过更简洁的格式(如json)进行通信的web服务,因此开发人员可以开发特定于某些现有(或自定义)Plone内容类型的新视图,然后可以将这些视图添加到映射中以使其可用。你知道吗

最后,映射本质上是端点,加上一个可选的子路径(可以是通配符)。在编写本文时,为自定义子路径指定通配符并不意味着根父视图可用,因此假设您有一个自定义下载视图,可以让用户列出实际内容中链接到子路径的格式,您可以执行以下操作:

Collection:

download_feed
download_feed/*

将使Collection content type中的download\u 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"
    />

然后,它将用您自己的范围管理器覆盖默认的(门户)基于内容类型的范围管理器。你知道吗

相关问题 更多 >