4

我最近开始遇到我的 Signin With Linkedin 功能的问题。我收到以下错误:

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

我确实在我的应用程序的 OAuth 2.0 设置中正确定义了我的重定向 URL。

我的 LinkedIn 应用程序中列出了以下权限:

  • r_emailaddress
  • 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();
    });

以下是 LinkedIn 的 in.js 中的相关函数:

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

第 5 行的 e().authorize() 是未定义的。

我不确定这个问题是否与 LinkedIn 的 API 升级到 2.0 有关,或者作为授权函数的一部分返回的承诺是否存在一些同步问题。对于为什么会开始以及如何解决它,真的是一种损失。

4

1 回答 1

4

我也遇到了这个问题,在搜索了一段时间后,事实证明他们正在弃用整个 Javascript SDK。以下是这里的一些相关报价

身份验证、SDK 和插件:我们还弃用了一些过时或很少使用的产品和技术。

  • 身份验证:我们将停用 OAuth 1.0,并要求所有开发人员使用自 2013 年以来我们一直支持的 OAuth 2.0。OAuth 2.0 是行业标准,并被我们平台上的大多数人广泛使用。

  • SDK:我们的 JavaScript 和移动软件开发工具包 (SDK) 将停止工作。开发人员需要直接从他们的应用迁移到使用 OAuth 2.0。

  • 插件:用于生成可快速向网站添加增强的 LinkedIn 功能的插入式代码的几个网站插件将不再可用。具体来说,会员简介、公司简介、公司内幕、您可能感兴趣的工作 (JYMBII) 和校友工具插件都将被弃用。

可悲的是,似乎没有我们可以使用的直接替代品

于 2019-04-18T17:44:57.503 回答