python - pmr2-oauth(plone 中的一个包)的内容类型范围管理器包含哪些内容

标签 python oauth plone

我正在尝试使用 plone 网站上的 pmr2.oauth 提供程序并使用 oauthV1 将我的自定义 api 连接到 plone 网站。从请求临时 key 到接收 oauth 访问 token ,一切都很顺利。

但是当我尝试访问资源时,我得到了无效的范围。我被告知要填写 pmr2.oauth 包中的内容类型范围管理器,我必须将以下每个门户类型的映射填写到允许的子路径列表:Plone 站点、集合、文件、文件夹、管理器文件夹、页面、页面和子网站。

但是我不知道这里要填写什么,所以我希望你们能帮助我。

最佳答案

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

您需要填写的是您想要访问该特定内容类型的 View 。例如,如果您希望显示集合中所有项目的列表,您需要弄清楚 View 的名称是什么(在本例中为 atct_topic_view)。对于标准页面,它将是 document_view。也就是说,OAuth 通常针对通常通过更简洁的格式(例如 json)进行通信的 Web 服务,因此开发人员可以开发特定于某些现有(或自定义)Plone 内容类型的新 View ,然后可以将它们添加到要提供的映射。

最后,映射本质上是端点,加上一个可选的子路径(可以是通配符)。在撰写本文时,为自定义子路径指定通配符并不意味着根父 View 可用,因此假设您有一个自定义下载 View ,可以让用户列出链接到实际内容中的子路径的格式,您可能会做一些事情像这样:

Collection:

download_feed
download_feed/*

将在 Collection 内容类型中提供 download_feed View ,然后提供其中的任何子路径(通常通过为自定义 View 实现 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"
    />

然后应该用您自己的范围管理器覆盖基于默认(门户)内容类型的范围管理器。

关于python - pmr2-oauth(plone 中的一个包)的内容类型范围管理器包含哪些内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19177096/

相关文章:

python - 使用 Transmogrifier 在 Plone 中上传内容时出现未经授权的异常

python - python 中的日期范围,其中结果值必须为字符串格式

Python - 比较两个字符串的最佳方法,记录比较特定项目序列位置的统计数据?

javascript - 获取应用程序访问 token 的 Facebook 图形 API 调用返回 "unknown error"

java - 使用 DropWizard 进行 OAuth 身份验证

java - 如何退出 Google+ 帐户?

plone - Plone 的标题 + 内联图像上传 (BLOB) portlet

python xinetd 客户端断线处理

python - Can't convert cuda :0 device type tensor to numpy. Use Tensor.cpu() to copy the tensor to host memory 先

Plone/Zope 在一个内容类型上使用两个工作流,我可以在状态栏中显示与用户角色相关的当前状态吗?