Как получить адрес электронной почты из LinkedIn с помощью Flask-oauthlib?

[EDIT] Просто чтобы вы не прочитали это: я уже нашел ответ сам, а также разместил ответ здесь ниже.. :)

Я создаю веб-сайт, используя (отлично) Python Flask framework, и сейчас я создаю интеграцию с LinkedIn. . Для этого я использовал пример, который я нашел здесь и который работает возвращая данные r_basicprofile.

Теперь я хочу получить больше информации от linkedin, поэтому я изменил scope с 'r_basicprofile' на 'r_emailaddress'. Он правильно переходит в LinkedIn и (в дополнение к базовой информации профиля) также правильно запрашивает доступ к адресу электронной почты. После ввода моего имени пользователя и пароля я получаю только базовый профиль обратно в json. Единственная часть, которую я не понимаю из кода примера, это строка 54, которая получает актуальную информацию от LinkedIn. Функция выглядит следующим образом:

@app.route('/login/authorized')
def authorized():
    resp = linkedin.authorized_response()
    if resp is None:
        return 'Access denied: reason=%s error=%s' % (
            request.args['error_reason'],
            request.args['error_description']
        )
    session['linkedin_token'] = (resp['access_token'], '')
    me = linkedin.get('people/~')  # <== HOW can I get this line to return the email address?
    return jsonify(me.data)

JSON, который в настоящее время возвращается, выглядит следующим образом:

{
  "firstName": "MyFirstName", 
  "headline": "Developer", 
  "lastName": "MyLastName", 
  "siteStandardProfileRequest": {
    "url": "https://www.linkedin.com/profile/view?id=12345678&authType=name&authToken=XXXXXXXXX=api*a1234567*s1234567*"
  }
}

Кто-нибудь знает, как я могу получить адрес электронной почты после правильной авторизации моего приложения для адреса электронной почты?

Все советы приветствуются!


person kramer65    schedule 14.10.2014    source источник


Ответы (1)


Не берите в голову! Я уже нашел!

Мне нужно использовать следующее, чтобы получить адрес электронной почты:

emailAddress = linkedInApp.get('people/~/email-address')
print emailAddress.data

В следующий раз я буду читать немного больше, прежде чем писать. В любом случае спасибо за внимание!

ps: я могу принять свой ответ только через 2 дня. Так что извините меня, если вы пришли к этому вопросу, потому что вы видели, что ответ еще не принят. Если кто-то еще сможет скопировать и вставить мой ответ, я буду рад принять их ответ, чтобы этот вопрос мог войти в список забытых вопросов.. :)

person kramer65    schedule 14.10.2014
comment
«Если кто-то другой может скопировать и вставить мой ответ, я буду рад принять их ответ» — не очень хорошая идея. Вы нашли свой собственный ответ, так что вам лучше принять свой собственный ответ :) - person avi; 14.10.2014
comment
@avi - Хорошо. В таком случае мне придется ждать 2 дня.. :) - person kramer65; 14.10.2014