API LinkedIn — получайте обновления компании

Я пытаюсь получить обновления компании с помощью LinkedIn API. Почему-то я не могу заставить это работать. Я вижу console.log("При авторизации"); в консоли, но после этого ничего не происходит. Как будто останавливается с этой функцией... Ни видимых ошибок, ни других консольных сообщений. Кто-нибудь знает, что может быть не так?

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

Мой код таков:

<head>
    <script type="text/javascript" src="https://platform.linkedin.com/in.js">
    api_key: 14characters
    onLoad: onLinkedInLoad 
    authorize: true 
    </script>
</head>

<body>
    <div id="displayUpdates"></div>

    <script type="text/javascript">
        function onLinkedInLoad() {
            IN.Event.on(IN, "auth", onLinkedInAuth);
            console.log("On auth");
        }
        function onLinkedInAuth() {
            var cpnyID = 2414183; //LinkedIn's testDevCo
            IN.API.Raw("/companies/" + cpnyID + "/updates?event-type=status-update&start=0&count=10&format=json")
                .result(displayCompanyUpdates);
                console.log("After auth");
        }
        function displayCompanyUpdates(result) {
            var div = document.getElementById("displayUpdates");
            var el = "<ul>";
            var resValues = result.values;
            for (var i in resValues) {
                var share = resValues[i].updateContent.companyStatusUpdate.share;
                var isContent = share.content;
                var isTitled = isContent,
                    isLinked = isContent,
                    isDescription = isContent,
                    isThumbnail = isContent;
                if (isTitled) {
                    var title = isContent.title;
                } else {
                    var title = "News headline";
                }
                if (isLinked) {
                    var link = isContent.shortenedUrl;
                } else {
                    var link = "#";
                }
                if (isDescription) {
                    var description = isContent.description;
                } else {
                    var description = "No description";
                }
                if (isThumbnailz) {
                    var thumbnailUrl = isContent.thumbnailUrl;
                } else {
                    var thumbnailUrl = "http://placehold.it/60x60";
                }
                if (share) {
                    var content = "<a target='_blank' href=" + link + ">" + title + "</a><br>" + description;
                    el += "<li><img src='" + thumbnailUrl + "' alt=''>" + content + "</li>";
                }
                console.log(share);
            }
            el += "</ul>";
            div.innerHTML = el;
        }
        </script>
</body> 

person Meek    schedule 05.01.2016    source источник
comment
если вы поставите console.log() в начале onLinkedInAuth(), будет ли это записываться? также onload должен быть - onLoad **A comma-separated list** of the names of Javascript functions that you want the SDK to execute once it has successfully loaded itself.   -  person Craicerjack    schedule 05.01.2016
comment
Спасибо за ответ. Нет, он ничего не выводит в начале onLinkedInAuth()...   -  person Meek    schedule 05.01.2016
comment
Итак, onLinkedInAuth() не вызывается, поэтому ваша проблема связана с этой строкой IN.Event.on(IN, "auth", onLinkedInAuth);. Не использовал API LinkedIn, поэтому извините, не могу помочь, кроме этого - вы пытались использовать другой eventName, отличный от auth   -  person Craicerjack    schedule 05.01.2016
comment
Ok. Я попытался изменить onLoad на: onLoad: onLinkedInLoad, onLinkedInAuth, displayCompanyUpdates, который внезапно выдает мне эту ошибку: Не удается прочитать «значения» свойства undefined, указывающего на эту строку: var resValues = result.values;   -  person Meek    schedule 05.01.2016
comment
Таким образом, добавление функций в onLoad, кажется, помогает. Тем не менее, я все еще получаю эту ошибку: Не удается прочитать «значения» свойства undefined, указывающие на эту строку: var resValues = result.values; , но все равно отображает 10 сообщений, несмотря на эту ошибку. Есть идеи, что не так с result.values? Документы находятся здесь: developer.linkedin.com/docs/company-pages#company_updates   -  person Meek    schedule 05.01.2016
comment
хорошо глядя на ваш код, ваша функция function displayCompanyUpdates(result) принимает параметр результата, но вы не передаете его при вызове, поэтому result не определено   -  person Craicerjack    schedule 05.01.2016
comment
Хорошо, спасибо, что заметили. Что мне нужно изменить, чтобы передать его правильно?   -  person Meek    schedule 06.01.2016
comment
@Craicerjack Я решил это, удалив displayCompanyUpdates из onLoad. Очевидно, нужны были только onLinkedInLoad и onLinkedInAuth. Пожалуйста, оставьте ответ, так как вы все еще помогали мне на этом пути, чтобы заставить это работать. Спасибо.   -  person Meek    schedule 06.01.2016
comment
проработайте все, что вы сделали, чтобы исправить это, и оставьте свой собственный ответ со всеми этими подробностями. Вы можете принять его на более позднем этапе. Я просто рад, что ты разобрался.   -  person Craicerjack    schedule 07.01.2016
comment
Как получить cpnyID??/.. Я нашел его по URL-адресу, но не работает....   -  person Champ Decay    schedule 27.10.2017


Ответы (1)


В конце концов, я придумал это - добавил onLinkedInAuth в onLoad:

<script type="text/javascript" src="https://platform.linkedin.com/in.js">
    api_key: 14characters
    onLoad: onLinkedInLoad, onLinkedInAuth 
    authorize: true 
</script>

Это помогло.

person Meek    schedule 07.01.2016
comment
Как узнать ID компании?? - person Champ Decay; 27.10.2017
comment
Это цифры в конце URL-адреса компании в LinkedIn, например, linkedin.com/company/3724 -> идентификатор 3724. - person Meek; 27.10.2017