Обратный вызов IN.User.Authorize никогда не срабатывал

С сегодняшнего дня перестало работать наше приложение, использующее связанный в javascript SDK для аутентификации пользователей. Мы поняли, что вызов https://platform.linkedin.com/in.js теперь перенаправляет на https://platform.linkedin.com/xdoor/scripts/in.js .

Следовательно, вызовы IN.User.Authorize(callbackFunction) успешно открывают диалоговое окно аутентификации, но обратный вызов больше не запускается. ​

Кроме того, в другой части нашего приложения мы используем IN.UI.Authorize.place().onWindowRemove.subscribe(callbackFunction) для отслеживания закрытия диалогового окна. Эта функция также прекратила формулировку и теперь открывает новое окно с URL-адресом invalid://, а консоль выдает эту ошибку:

jSecure Error: URL should be absolute with allowed schemas, relative, a hash fragment or query string. TODO?client_id=XXXX&type=user-agent in.js:7
​
jSecure Error: URL should be absolute with allowed schemas, relative, a hash fragment or query string. invalid://?xdOrigin=https%3A%2F%2FXXX-XXX&xdChannel=XXXX&xd_origin_host=https%3A%2F%2FXXXX.XXXX in.js:7 
​
jSecure Error: URL should be absolute with allowed schemas, relative, a hash fragment or query string. TODO?client_id=XXXX&type=user-agent

У вас есть идея, почему это перестало работать?

РЕДАКТИРОВАТЬ: ошибка снова появилась с 2019 01 28.


person klacointe    schedule 15.11.2018    source источник
comment
У нас те же проблемы, наряду со многими другими ошибками, которые ранее работали. Мы не вносили изменений в код с нашей стороны, но многие функции в настоящее время не работают. На этой неделе код SDK немного изменился, что вы можете увидеть в веб-архиве web.archive.org/ Интернет*/platform.linkedin.com/in.js   -  person a.stringham    schedule 15.11.2018
comment
Я получаю это сообщение об ошибке: Unhandled Promise Rejection: TypeError: null не является объектом (оценка 'this.self.location.replace'), который указывает на строку 1434 в in.js и код нарушения: `return l()(e , t), a()(e, [{key: reload, value: function() { this.self.location.replace(P.call(this)), D.call(this) } }]), e `   -  person tupakapoor    schedule 15.11.2018
comment
такая же проблема здесь. та же ошибка, что и у @tupakapoor.   -  person Cody Sand    schedule 16.11.2018
comment
Кажется, теперь это работает!   -  person tupakapoor    schedule 16.11.2018
comment
Та же проблема прямо сейчас, только что появившаяся 28 января 2018 года, работала до этого.   -  person Orun    schedule 28.01.2019
comment
Та же проблема. У кого-нибудь есть решение этой проблемы. ?   -  person M.J    schedule 30.01.2019
comment
@M.J Проверьте мой ответ.   -  person NavyCody    schedule 30.01.2019


Ответы (2)


Попробуйте заменить window.IN.User.authorize на window.IN.user.authorize.

window.IN.user.authorize возвращает обещание, и после успешного входа в систему выполняется обратный вызов. Это странно, но работает, если мы заменим пользователя на пользователя

window.IN.user.authorize().then(function(data){
                    console.log("Logged in successfully .");
                    window.IN.API.Raw("/people/~:(id,first-name,last-name,formatted-name,headline,location,industry,current-share,num-connections,num-connections-capped,summary,specialties,positions,picture-url,site-standard-profile-request,api-standard-profile-request,public-profile-url,email-address)").method("GET").body().result(function (oData) {
                        that.props.dispatch(userCreation(linkedInProfileFormat(oData)));
                    });
                },function(error){
                    alert("Linkedin failed because of harshita !");
                });   
person NavyCody    schedule 30.01.2019

Попробуйте этот код. Я сделал некоторые изменения и отлично работает для меня. нужно заменить window.IN.User.authorize() на window.IN.user.authorize()

  <script type="text/javascript" src="//platform.linkedin.com/in.js">
            api_key: XXXXXXXXX
            authorize: true

        </script>

        <script type="text/javascript">

        function liAuth(){
        window.IN.user.authorize().then(function(){
        getProfileData();
        });
        }
        function setLoginBadge(profile) {
                if (!profile) {
                profHTML = "<p>You are not logged in</p>";
                }                       
                document.getElementById("given_name").value = profile.firstName;
                document.getElementById("family_name").value = profile.lastName;
                document.getElementById("email").value = profile.emailAddress;
                document.getElementById("verifyOauthRequestLinkedIn").submit();
                }


        function onError(error) {
        console.log(error);
        }

        function getProfileData() {
        IN.API.Profile("me")
        .fields(["id", "firstName", "lastName", "pictureUrl", "publicProfileUrl","email-address","headline"])
        .result(function(result) {
        setLoginBadge(result.values[0]);
                })
        .error(onError);
        }

        </script>

        <a href="#"><img onclick="liAuth()" src="/images/linkedIn.png"></a>
person sumit katiyar    schedule 06.02.2019