【问题标题】:pyramid_oauth2 service provider documentation or examplespyramid_oauth2 服务提供者文档或示例
【发布时间】:2012-07-30 13:51:34
【问题描述】:

我需要在金字塔中创建一个 api,我认为 oauth2 最好实施而不是重新发明轮子,已经安装了 pyramid_oauth2 包但不确定文档或示例。有人知道任何好的资源吗?一个 github 项目或 oauth2 服务提供商的东西会很好。

【问题讨论】:

    标签: python pyramid oauth-provider


    【解决方案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 等等。我相信并不是每个人都在寻找 oauth,只是为了对 facebook connect 等网站进行身份验证。可能有兴趣将 access_token 用于身份验证以外的其他用途。此外,由于金字塔与 sqlalchemy 和其他数据库无关,因此它不强制执行任何操作。换句话说,用 ZODB 实现它,SQLAlchemy 应该很容易。

    我相信流程实际上非常简单,我实际上并没有(我猜)为当前的客户端流程正确实施 oauth2。缺少一些属性,例如grant_type 等。它们可以作为额外参数传递,但取决于 oauth2 服务器,它可能无法在任何地方正常工作。

    顺便说一句,我希望将提供程序添加到 ini 文件中,以便可以从那里而不是在代码中加载它们。这样你就可以为 dev、prod 等维护不同的应用程序。

    【讨论】:

    • 感谢您的包裹,干得好,感谢您的详细回复,但我猜这是针对客户端的...,我的意思是服务器端,我正在制作 api,最接近的文章我发现是这个:philipsoutham.com/post/2172924723/two-legged-oauth-in-python
    • 请记住,据我所知,python-oauth2 实际上是一个 oauth1.0 包。它之所以称为 2,是因为它是 python-oauth 的替代品。阅读文档后,我没有找到任何关于 oauth2 的信息,这就是我在上面创建该包的原因。还不能全职工作,但可能很快就会做一些事情,因为我可能很快需要一个 oauth2 服务器
    • 我刚读了这篇有趣的文章,如果还没有,你应该看看:pydanny.com/the-sorry-state-of-python-oauth-providers.html,也许那里的一些人也可以在项目中提供帮助
    • 看看这个,同名...:code.google.com/p/pyramid-oauth2,似乎有些过时,但更多的是我要找的,也许你可以整合它
    • 是的,我看过了,我想我可以清除其中的一部分。感谢您指出这一点
    猜你喜欢
    • 2011-07-28
    • 1970-01-01
    • 2014-04-20
    • 2015-07-22
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 2012-07-07
    • 1970-01-01
    相关资源
    最近更新 更多