Вход в LinkedIn с базовым примером не работает

Я хотел бы добавить возможность входа в LinkedIn в свой проект. Я следовал руководству, приведенному на странице разработчика LinkedIn, и получил следующий код. , действительно основные вещи из этого урока:

<!-- linkedin login -->
<script type="text/javascript" src="//platform.linkedin.com/in.js">
  api_key:   [MY_API_KEY] {~n}
  authorize: false {~n}
  onLoad: onLinkedInLoad {~n}
</script>

<!-- linkedin login play -->
<script type="text/javascript">

    // Setup an event listener to make an API call once auth is complete
    function onLinkedInLoad() {
        IN.Event.on(IN, "auth", getProfileData);
    }

    // Handle the successful return from the API call
    function onSuccess(data) {
        console.log(data);
    }

    // Handle an error response from the API call
    function onError(error) {
        console.log(error);
    }

    // Use the API call wrapper to request the member's basic profile data
    function getProfileData() {
        IN.API.Raw("/people/~").result(onSuccess).error(onError);
    }

</script>

Не обращайте внимания на {~n}, так как я использую dust.js для рендеринга страницы, и мне нужно, чтобы они передавали аргументы скрипту LinkedIn.

Итак, появляется кнопка входа, это означает, что LinkedIn смог правильно подключиться к моему API-ключу, но консоль Chrome выдает мне следующую ошибку: Uncaught Error: Could not execute 'onLinkedInLoad'. Please provide a valid function for callback.. Поскольку это пример, приведенный на странице руководства, я не знаю, что в нем может быть не так. Даже если я объявлю блок функций входа в LinkedIn перед вызовом LinkedIn in.js, я получаю ту же ошибку.

Я думаю, что это очень легко заметить ошибку, но я не могу сказать, что я делаю неправильно.


person Masiar    schedule 06.12.2015    source источник


Ответы (1)


Это происходит из-за того, что вы вызываете onLinkedInLoad() в разделе заголовка, и если вы работаете на нескольких страницах... он будет вызываться на каждой странице, даже если у него нет данных из вызова API (или просто вы не делаете любой вызов на странице, на которой появляется эта ошибка).

Попробуйте это`

// Removing event listener by calling IN.Event.on() outside of onLinkedInLoad()

    IN.Event.on(IN, "auth", getProfileData);


// Handle the successful return from the API call
function onSuccess(data) {
    console.log(data);
}

// Handle an error response from the API call
function onError(error) {
    console.log(error);
}

// Use the API call wrapper to request the member's basic profile data
function getProfileData() {
    IN.API.Raw("/people/~").result(onSuccess).error(onError);
}

` И да удалите " onLoad: onLinkedInLoad {~n}" из первого вызова скрипта

person Bhawna Jain    schedule 28.02.2017
comment
Прошло некоторое время, и я не уверен, что это все еще актуально/работает. В то время я нашел другое решение, но спасибо за вклад. - person Masiar; 28.02.2017
comment
Это рабочее решение в настоящее время ... потому что я застрял на том же, что и вы ... а затем нашел эту страницу ... но это не могло мне помочь ... поэтому я решил обновить это .... и, кроме того, лучше поздно, чем никогда ;) - person Bhawna Jain; 03.03.2017
comment
Вызовите getProfiledata() вместо IN.Event.on(IN, auth, getProfileData); - person Newred; 04.12.2018