开始
标准材料适用于安装。使用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解析。
授权指南
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