OneAll API包装器(http://www.oneall.com)。为30多个社交网络提供统一的API

pyoneall的Python项目详细描述


oneallhttp://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.usersome_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文件。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java解析一个文本文件,如果内容是一种特定的格式,就打印它   java如何使jbutton在另一个组件中执行键盘笔划   连接到独立帐户的java Stripe   java在数据库连接过程中出错。。。初始连接   一个系列JavaFX中特定节点的java集样式   java重建recycler视图会导致它消失   在codechef上提交java Getting runtime(NZEC)时出错   Java类路径设置错误   java如何显示数组中2个数字之间的信息?   java为什么新的GC只有很长的用户时间?   如何解决java。关于此代码的lang.OutOfMemoryError   通过应用程序在Facebook粉丝页面上发布java帖子   java Red5服务器无法启动   系统输出Java读取文本文件外置行   java整数。Parse对excel获取的字符串抛出NumberFormatException   有一个Java数组列表;如何按每个数组的最后一个元素排序?   java需要txt文件中的数据(以逗号分隔)来用现有类中的对象填充arraylist