OneAll API包装器(http://www.oneall.com)。为30多个社交网络提供统一的API
pyoneall的Python项目详细描述
oneall(http://www.oneall.com)为web应用程序提供了一个用于30+社交网络的统一api。 pyoneall为开发人员提供了基于python的web应用程序的oneall api的简单接口。
实施概述
oneall api文档可在http://docs.oneall.com获得。但是,为了在应用程序中使用pyoneall,它 足以读取连接api的文档:Connection API Documentation。
到目前为止,我们已经在Flask和Django应用程序中测试了pyoneall要使用OneAll作为Django身份验证后端, 请查看我们的django_oneall项目,它依赖于这个包。
pyoneall定义了OneAll类,它是api客户端。截至目前,它有以下方法:
^{tt2}$: | Get a list of social connections to the site |
---|---|
^{tt3}$: | Get detailed connection data including user details |
^{tt4}$: | Get a list of users that have connected with the site |
^{tt5}$: | Get detailed user data |
^{tt6}$: | |
Get a list of user’s contacts | |
^{tt7}$: | Publish a message using user’s social network account |
由于pyoneall包装了返回JSON对象的REST API,这些方法返回的对象在某种程度上表现为 类似javascript的方式。这意味着除了dict-样式object['key']符号之外,您还可以 使用object.key。
此外,json响应中嵌套的数组由定义by_*()分组和搜索的类表示。 方法,以及它继承自的list方法。
有关这些类的更多信息,请查看help(pyoneall.base.OADict)和help(pyoneall.base.OAList)。
示例
认证
访问oneall api需要身份验证。按照中描述的过程获取API凭据 Authentication Documentation。
创建OneAll客户端的实例:
from pyoneall import OneAll oa = OneAll( site_name='NAME OF YOUR ONEALL SITE', public_key='PUBLIC KEY OF YOUR SITE', private_key='PRIVATE KEY OF YOUR SITE' )
连接api
获取连接列表
connections = oa.connections()
connections现在包含api调用结果的“连接”部分,如 http://docs.oneall.com/api/resources/connections/list-all-connections/。 完整的响应数据(用于调试和其他)在connections.response中。
oneall对包含许多条目的调用使用分页。每次调用都返回一页多达500个条目。当 OneAll.connections()方法执行时不带参数,只加载第一页。你的访问权限 connections.pagination中的分页信息。
为了加载自定义范围的页面,您可以执行如下操作:
connections = oa.connections(first_page=3, last_page=6)
或者,如果要加载所有页面,请使用:
connections = oa.connections(fetch_all=True)
当然,这将导致多个api调用。
连接列表本身位于connections.entries:
>>> connections.entries [{u'callback_uri': u'http://www.example.com/connect/', u'connection_token': u'cf2fffc7-34dc-484e-95cd-13f8ab838e22', u'date_creation': u'Sun, 23 Jun 2013 14:12:43 +0200', u'status': u'succeeded'}, {u'callback_uri': u'http://m.example.com/connect/', u'connection_token': u'4276bd23-3605-4679-acd2-963148c477cc', u'date_creation': u'Sun, 23 Jun 2013 14:13:20 +0200', u'status': u'succeeded'}, {u'callback_uri': u'http://www.example.com/connect/', u'connection_token': u'58ad2a04-ed1e-4799-a3ca-2b26651e35a0', u'date_creation': u'Sun, 23 Jun 2013 14:18:00 +0200', u'status': u'succeeded'}, {u'callback_uri': u'http://m.example.com/connect/', u'connection_token': u'e5231790-c6dc-4ce8-9922-792a2aebbba2', u'date_creation': u'Sun, 23 Jun 2013 14:18:11 +0200', u'status': u'succeeded'}, {u'callback_uri': u'http://www.example.com/connect/', u'connection_token': u'f82ad1e5-113f-46a2-b1c5-2a57a6002401', u'date_creation': u'Sun, 23 Jun 2013 14:21:14 +0200', u'status': u'succeeded'}]
在上面的例子中,您可以看到一些连接是通过桌面网站的回调建立的 (http://www.example.com/connect/),有些是用移动webapp(http://m.example.com/connect/)制作的。 我们可以使用以下方法获取按“回调uri”分组的对象:
>>> connections.entries.by_callback_uri() {u'http://www.example.com/connect/': [ {u'callback_uri': u'http://www.example.com/connect/', u'connection_token': u'cf2fffc7-34dc-484e-95cd-13f8ab838e22', u'date_creation': u'Sun, 23 Jun 2013 14:12:43 +0200', u'status': u'succeeded'}, {u'callback_uri': u'http://www.example.com/connect/', u'connection_token': u'58ad2a04-ed1e-4799-a3ca-2b26651e35a0', u'date_creation': u'Sun, 23 Jun 2013 14:18:00 +0200', u'status': u'succeeded'}], {u'callback_uri': u'http://www.example.com/connect/', u'connection_token': u'f82ad1e5-113f-46a2-b1c5-2a57a6002401', u'date_creation': u'Sun, 23 Jun 2013 14:21:14 +0200', u'status': u'succeeded'}, u'http://m.example.com/connect/': [ {u'callback_uri': u'http://m.example.com/connect/', u'connection_token': u'4276bd23-3605-4679-acd2-963148c477cc', u'date_creation': u'Sun, 23 Jun 2013 14:13:20 +0200', u'status': u'succeeded'}, {u'callback_uri': u'http://m.example.com/connect/', u'connection_token': u'e5231790-c6dc-4ce8-9922-792a2aebbba2', u'date_creation': u'Sun, 23 Jun 2013 14:18:11 +0200', u'status': u'succeeded'}]}
或者获取具有特定“回调uri”的连接列表:
>>> connections.entries.by_callback_uri('http://m.example.com/connect/') [{u'callback_uri': u'http://m.example.com/connect/', u'connection_token': u'4276bd23-3605-4679-acd2-963148c477cc', u'date_creation': u'Sun, 23 Jun 2013 14:13:20 +0200', u'status': u'succeeded'}, {u'callback_uri': u'http://m.example.com/connect/', u'connection_token': u'e5231790-c6dc-4ce8-9922-792a2aebbba2', u'date_creation': u'Sun, 23 Jun 2013 14:18:11 +0200', u'status': u'succeeded'}]
读取连接详细信息
为了获得user_令牌和用户的社会身份,您可以将connection_令牌传递给 connection()方法的OneAll实例:
some_connection = oa.connection('e5231790-c6dc-4ce8-9922-792a2aebbba2')
或者,也可以通过列表中某个条目的connection()方法获取连接详细信息 连接数:
some_connection = connections.entries[3].connection()
some_connection现在将包含API文档中描述的响应的“连接”部分 Read Connection Details,最重要的是some_connection.user和some_connection.user.user_token
用户api
获取用户列表
OneAll.users()的行为与OneAll.connections()的行为、参数和所有行为相同。这是因为相似性 列表用户和列表连接api,在分页和条目结构方面。
users = oa.users()
现在,您可以访问users.entries,甚至可以使用users.entries[4].user()访问详细的用户数据。
读取用户详细信息
使用:
user_token = some_connection.user.user_token some_user = oa.user(user_token)
some_user将包含在 http://docs.oneall.com/api/resources/users/read-user-details/。
读取用户的联系人
您可以使用:
contacts = some_user.contacts()
或者,使用:
contacts = oa.user_contacts(user_token)
代表用户发布内容
首先,您需要按照http://docs.oneall.com/api/resources/users/write-to-users-wall/中的说明格式化消息。 然后,使用publish():
发布它message = { 'request': { 'message': { 'parts': { 'text': { 'body': 'Hello World!' }}}}} oa.publish(user_token, message)
许可证
版权所有(c)2013-2015,Leandigo(www.leandigo.com) 在麻省理工学院的许可下发布。有关详细信息,请参见LICENSE文件。