用于与LinkedIn API交互的PythonAPI。

linkedin-api-json-client的Python项目详细描述


简介

LinkedIn API JSON客户端库为使用LinkedIn API提供了一个抽象接口。我的目标是,您不必了解oauth或linkedin客户端库的许多细节(如果设置正确,它应该可以正常工作)。

所有函数和类都是内联的。如果您还有其他问题,可以通过github或admin@mattsnider.com联系我。

免责声明

这个包松散地基于Aaron Brenzel的LinkedIn客户端库。最初的库是为xml支持而编写的,但linkedin现在支持json响应,imho提供了一个更干净的接口,可用于python。我试图保留相同的通用架构和api函数,同时添加一些新的架构和api函数,改进错误管理,并使api更加干燥。

开始

标准材料适用于安装。使用pip安装依赖项:

pip install linkedin-api-json-client

或从命令行安装:

python setup.py install

如果从命令行安装,则还需要安装oauth2、simplejson和httplib2包。

此软件包用于LinkedIn API。您必须提供自己的api密钥才能使此库工作。从LinkedIn获得API密钥后,实例化API客户端对象的语法如下:

my_key = 'mysecretkey'
my_secret = 'mysecretsecret'
li_client = LinkedInJsonAPI(my_key, my_secret)

从那里,您可以通过linkedinjsonapi对象的方法获取请求令牌、授权url、访问令牌和实际的linkedin数据。该对象将为您处理签名请求、url格式化和json解析。

依赖关系

目前,api依赖于oauth2、httplib2(用于oauth2)和simplejson。使用python包索引可以很容易地获得所有内容,如果使用pip安装,这些内容将自动包括在内。

授权指南

oauth授权是一个多步骤的过程。当用户想要授权您的应用程序时,您必须首先创建一个授权url,指明您的应用程序需要哪些权限,然后将用户重定向到那里:

from urllib import urlencode
from linkedin_json_client.constants import LinkedInScope
try:
    request_token_dict = li_client.get_request_token(scope=[
        LinkedInScope.BASIC_PROFILE, LinkedInScope.EMAIL_ADDRESS])
    url = '%s?%s' % (li_client.authorize_path, urlencode(request_token_dict))
    # store your request token in the user session for use in callback
    request.session['li_request_token'] = request_token_dict
    # REDIRECT USER TO url
except (HTTPError, socket.error):
    # failed to connect to LinkedIn, handle this in your application

在LinkedIn上设置应用程序时,指定了用于授权的回调URL。该url应该将存储的请求令牌与oauth验证器令牌进行比较:

oauth_verifier = request.GET.get('oauth_verifier')
request_token = request.session.get('li_request_token')

oauth_problem = request.GET.get('oauth_problem')
if oauth_problem or request_token is None:
    if oauth_problem == 'user_refused':
        # user refused auth, handle in your application
    # some other problem, handle in your application
else:
    access_token = li_client.get_access_token(request_token, oauth_verifier)
    # user successfully authorized, store this access_token and associate with the user for use with API

一旦您有了访问令牌,就可以对api进行调用:

from linkedin_json_client.constants import BasicProfileFields, BasicProfileSelectors
json_object = li_client.get_user_profile(access_token, [BasicProfileSelectors.FIRST_NAME, BasicProfileSelectors.LAST_NAME, BasicProfileSelectors.ID])

json_object[BasicProfileFields.ID]
json_object[BasicProfileFields.FIRST_NAME]
json_object[BasicProfileFields.LAST_NAME]

如果任何API调用出错(授权除外),则会引发LinkedInApiJSonClientTerror,因此最好始终将API调用包装在Try语句中,并在应用程序中处理错误:

try:
    # api call
except LinkedInApiJsonClientError, e:
    print e

待办事项

  1. 搜索支持
  2. 模拟LinkedIn API的测试覆盖率
  3. 根据注释生成文档
  4. 针对linkedin api的测试覆盖率,将要求测试用户具有相当完整的配置文件。无法从LinkedIn获得创建测试数据的帮助,因此如果有人有任何想法,请告诉我。

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

推荐PyPI第三方库


热门话题
尝试连接到Red5服务器时出现java问题   java实现Runnable的类被认为是ExecutorServices的“Runnable任务”?   java struts2类中的多个@validation   java未能应用插件[class'org.gradle.api.plugins.scala.ScalaBasePlugin']:gradle v2。13   如何使用Java流仅收集长度最大的元素?   从spring引导应用程序连接到firestore的java引发空指针异常   java从SQLite插入和获取真实数据类型会为连续插入获取空值吗?   当存在未知数量的空格时,使用java替代正向查找   部署如何为当今的浏览器部署java小程序(小程序、嵌入、对象)?   @OneToMany和@ManyToOne@Formula之间的java双向关系返回null   java为什么在我的例子中,协议缓冲区的性能比JSON差?   如何部署混合C++/Java(JNI)应用程序?   java如何在程序中显示字符串的完整信息。反恐精英?   java在Hibernate中从持久性上下文中分离实体中的实体