使用python-linkedin库获取LinkedIn的OAuth访问令牌 [英] Getting OAuth access token for LinkedIn using python-linkedin library

查看:83
本文介绍了使用python-linkedin库获取LinkedIn的OAuth访问令牌的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用带有以下代码的python-linkedin库获取LinkedIn用户访问令牌.它为我提供了访问代码,但在获取access_code之后却没有指向其他部分.

I'm trying to get the LinkedIn user access token using python-linkedin library with the following code. It's giving me access code but not directing to else part after getting the access_code.

from linkedin import linkedin
from lnkd.settings import LINKEDIN_CONSUMER_KEY, LINKEDIN_CONSUMER_SECRET, RETURN_URL
from django.http import HttpResponseRedirect, HttpResponse


def get_linkedin_token(request):

    authentication = linkedin.LinkedInAuthentication( 
                            LINKEDIN_CONSUMER_KEY, 
                            LINKEDIN_CONSUMER_SECRET,
                            RETURN_URL,
                            linkedin.PERMISSIONS.enums.values()
                    )
    access_code = request.GET.get('code')

    if code is None:
        application = linkedin.LinkedInApplication(authentication)
        return HttpResponseRedirect(authentication.authorization_url)
    else:    
        authentication.authorization_code = access_code
        access_token = authentication.get_access_token()
        return Httpresponse(access_token)

我在做什么错了?

推荐答案

我知道如何逐步进行连接,我一直使用OAuth步骤,并且对我有效,并已针对XING和Linkedin进行了测试:

I know how to connect doing it step by step, I allways use the OAuth steps and it works for me, tested for XING and Linkedin:

from rauth import OAuth1Service
import webbrowser

CLIENT_ID = 'your client ID'
CLIENT_SECRET = 'your client secret'
RETURN_URL = "http://localhost:8000"
BASE_URL = 'https://api.linkedin.com'
AUTHORIZATION_URL = BASE_URL +'/uas/oauth/authenticate'
REQUEST_TOKEN_URL = BASE_URL +'/uas/oauth/requestToken'
ACCESS_TOKEN_URL = BASE_URL + '/uas/oauth/accessToken'

linkedin = OAuth1Service(
                    name='linkedin',
                    consumer_key=CLIENT_ID,
                    consumer_secret=CLIENT_SECRET,
                    request_token_url=REQUEST_TOKEN_URL,
                    access_token_url=ACCESS_TOKEN_URL,
                    authorize_url=AUTHORIZATION_URL,
                    base_url=BASE_URL)

token, token_secret = linkedin.get_request_token(
    method='GET',
    params={'oauth_callback': 'oob'})

url = linkedin.get_authorize_url(token)
webbrowser.open(url)

pin = raw_input('PIN:')

session = linkedin.get_auth_session(
    token,
    token_secret,
    method='POST',
    data={'oauth_verifier': pin})

现在,您有了一个名为"session"的变量,该变量可以处理GET,POST和PUT请求.例如,对于Xing,我没有在Linkedin上尝试过,但应该是这样的:

Now, you have a variable called 'session' which allows to handle GET, POST and PUT requests. For an instance, that is for Xing, I didn´t try it with Linkedin but it should be something like:

#Find all IDs from your contacts list    
search = "/v1/users/me/contact_ids"
res_ids = session.get(search,params={'format':'json'})
res_ids = res_ids.json()
print res_ids

# PUT a new webpage in your profil
res = session.put(
 '/v1/users/me/web_profiles/homepage',
 {'url[]': 'http://stackoverflow.com/questions/25183197'}
)

这篇关于使用python-linkedin库获取LinkedIn的OAuth访问令牌的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆