这是测试代码:
步骤1:请求验证码
args_str = urlencode({
'response_type' : 'code',
'client_id' : '<app client id>',
'scope' : 'r_emailaddress r_basicprofile',
'state' : '<my state id>',
'redirect_uri' : '<app redirect url>'
})
url = 'https://www.linkedin.com/oauth/v2/authorization'
return redirect(url + '?' + args_str)
步骤2 处理回叫
步骤3 获取访问令牌
步骤4 :使用访问令牌从linkedin获取数据
def get_linkedin_data(request, access_token):
api_endpoint_profile = 'https://api.linkedin.com/v1/people/~'
access_token = access_token
headers = {}
headers['Authorization'] = 'Bearer ' + access_token
headers['User-Agent'] = 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0'
headers['x-li-format'] = 'json'
values = {
'format' : 'json'
}
data = urllib.parse.urlencode(values)
data = data.encode('ascii')
url_request = urllib.request.Request(api_endpoint_profile, data=data, headers=headers, method='GET')
url_response = urllib.request.urlopen(url_request)
response_data_profile = json.loads(url_response.read().decode('utf-8'))
response_data_profile变量仅包含基本配置文件数据,但不包含电子邮件地址。
我在这里想念什么?
注意:
在Linkedin开发人员帐户中创建的应用,并选择了r_basicprofile和r_emailaddress范围
在api尝试获取链接数据时授予范围basicprofile和emailaddress的权限