Кнопка входа иногда не появляется на Angular

У меня есть стандартный скрипт LinkedIn JSAPI в моем index.html:

<script type="text/javascript" src="http://platform.linkedin.com/in.js"></script>

Я использую Angular.js, и на моей странице входа есть этот код:

<button class="btn btn-primary" ng-click="FBlogin()">Connect with Facebook</button> 
<script type="in/Login" data-onAuth="getLinkedInProfile"></script>
<script type="text/javascript">
    // upon getting in.js above, apply to register window scope
    function getLinkedInProfile() {
        IN.API.Profile("me").fields(["id", "firstName", "lastName", "email-address", "picture-urls::(original)", "industry", "languages", "educations", "three-current-positions", "three-past-positions"])
            .result(function(me) {
              angular.element(document.getElementById('login_window')).scope().linkedInRegistration(me) // calls scope function
            })
            .error(function(error) {
              console.log('>> error on LinkedInLoad', error)
            })
    }
</script>

В некоторых случайных случаях кнопка просто не появляется. Я несколько заметил, что если я удалю все параметры fields(), то кнопка будет надежно отображаться, но это не так, если причина в этом. Какие-либо предложения?


person Gary    schedule 22.01.2015    source источник
comment
Я не уверен, что вызывает это. Но у angular есть жизненный цикл приложения, который анализирует HTML, настраивает модули, регистрирует службы и т. д. Я думаю, что если вы интегрируете эту функцию в angular.factory, все должно быть в порядке.   -  person Ifch0o1    schedule 22.01.2015
comment
Не могли бы вы показать нам, где вы вызываете свою функцию? Может что-то не загружается должным образом.   -  person Pio    schedule 22.01.2015
comment
Функция getLinkedInProfile() вызывается после того, как данные возвращаются после входа в систему. Что ты имеешь в виду?   -  person Gary    schedule 22.01.2015


Ответы (2)


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

Это происходит только с JavaScript API, и я считаю, что это происходит на вашей стороне.

person Samer Bechara    schedule 22.01.2015

Сегодня я заметил, что кнопка входа в систему linkedIn исчезает при изменении состояния. Если кнопка находится в состоянии A и состояние изменяется на B, а затем обратно на A, кнопка больше не отображается. Я решил это, используя директиву для размещения кнопки вместо ее жесткого кодирования в представлении. Решение, которое я использовал, находится в ответе на аналогичный вопрос здесь, в stackoverflow: Кнопка «Поделиться в LinkedIn» появляется только при начальной загрузке в приложении AngularJS

Надеюсь, это поможет другим, приходящим :-)

person Jette    schedule 09.05.2016