首页 > 解决方案 > Linkedin API 在 Django 2.0 中不返回电子邮件地址

问题描述

这是测试代码:

第 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 变量仅包含基本配置文件数据,但不包含电子邮件地址。

我在这里想念什么?

笔记:

  1. 在 Linkedin 开发者帐户中创建的应用程序已选择 r_basicprofile 和 r_emailaddress 范围

  2. 当 api 尝试获取链接数据时,授予范围 basicprofile 和 emailaddress 的权限

标签: pythondjangoapilinkedin

解决方案


推荐阅读