Войти через LinkedIn Авторизовать Обещание Не определено - PullRequest
3 голосов
/ 11 апреля 2019

Недавно у меня начались проблемы с моей функциональностью Signin With Linkedin.Я получаю следующую ошибку:

Uncaught TypeError: Cannot read property 'then' of undefined at Object.authorize (in.js:18)

У меня правильно определены URL-адреса перенаправления в настройках OAuth 2.0 моих приложений.

Мое приложение LinkedIn имеет следующие разрешенияперечисленные в нем:

  • адрес_почты r
  • w_share
  • r_basicprofile
  • r_liteprofile
  • rw_company_admin
  • w_member_social

Вот мой код:

<script type="application/javascript">
    //This will be re-defined where it is needed
    var linkedInAPILoaded = function(){};
</script>

<script type="text/javascript" src="https://platform.linkedin.com/in.js">
    api_key:    ${apiKey}
    authorize:  true
    onLoad:     linkedInAPILoaded
    lang:       en_US
</script>

<form name="li_signin" class="li_signin" action="<c:url value='/signin/linkedin'/>" method="post">
    <input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/>
    <a id="linkedInIcon" href="javascript:;" aria-label="<spring:message code="oa.social.linkedin.login"/>">
        <i class="glyphicon glyphicon-refresh gly-spin hidden"></i>
        <img src="<c:url value='/images/In-2C-48px-R.png'/>" alt="<spring:message code='oa.social.linkedin.signin.link' />" />
    </a>
</form>

<script type="text/javascript">
    var linkedInIcon = $('#linkedInIcon');

    function callbackFunction() {
        $('#profileOverlay').addClass('hidden');
        $('#loadingOverlay').removeClass('hidden');
        linkedInIcon.blur();
        linkedInIcon.find('.gly-spin').removeClass('hidden');
        linkedInIcon.find('img').addClass('hidden');
        linkedInIcon.closest('form').submit();
    }

    linkedInIcon.on('click', function() {
        IN.User.authorize(callbackFunction, window);
        callbackFunction();
    });

Вот соответствующая функция из in.js LinkedIn:

authorize: function(t, n) {
    return t = t ? t.bind(n || window) : function() {}
    ,
    e().credentials.isAuthenticated ? (t(),
    !0) : (e().authorize().then(t),
    !1)
},

И это e ().authorize () в строке 5, которая не определена.

Я не уверен, связана ли эта проблема с обновлением API LinkedIn до 2.0 или есть какая-то проблема синхронности с обещанием, возвращаемым как часть функции авторизации,Действительно как потеря того, почему это началось и как это исправить.

1 Ответ

1 голос
/ 18 апреля 2019

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

Аутентификация, SDK и плагины. Мы также не поддерживаем некоторые устаревшие или редко используемые продукты и технологии.

  • Аутентификация. Мы закроем OAuth 1.0 и потребуем от всех разработчиков использовать OAuth 2.0, который мы поддерживаем с 2013 года. OAuth 2.0 является отраслевым стандартом и широко используется большинством людей, работающих на нашей платформе.

  • SDK: наши комплекты для разработки JavaScript и мобильных программ перестают работать. Разработчикам необходимо перейти на использование OAuth 2.0 непосредственно из своих приложений.

  • Плагины: некоторые плагины для веб-сайтов, которые использовались для создания выпадающего кода, который мог быстро добавить расширенные функциональные возможности LinkedIn к веб-сайтам, больше не будут доступны для использования. В частности, профили участников, профиль компании, инсайдер компании, вакансии, которые могут вас заинтересовать (JYMBII), и плагины Alumni Tool будут устаревшими.

К сожалению, похоже, что нет прямой замены, которую мы можем использовать

...