pyramid_oauth2服务提供商文档或示例

时间:2012-08-01 15:58:46

标签: python pyramid oauth-provider

我需要在金字塔中制作一个api,我认为oauth2可以很好地实现不重新发明轮子,已经安装了pyramid_oauth2包但不确定文档或示例。谁知道有什么好资源?一个github项目或oauth2服务提供商的东西会很好。

1 个答案:

答案 0 :(得分: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文件中,以便可以从那里而不是代码中加载它们。这样你就可以为dev,prod等维护不同的应用程序。