7

Since today, our application that uses the linkedin javascript SDK to authenticate users stopped working. ​ We realized that the call to https://platform.linkedin.com/in.js now redirects to https://platform.linkedin.com/xdoor/scripts/in.js.

​ Consequently, calls to IN.User.Authorize(callbackFunction) successfully opens the authentication dialog window but the callback is never fired anymore. ​

Also, in another part of our application we are using the IN.UI.Authorize.place().onWindowRemove.subscribe(callbackFunction) to track dialog closes. This feature has also stopped wording and now opens a new window with the url invalid:// and the console throws this error: ​

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

​ ​ Do you have an idea on why this stopped working ?

EDIT: Bug reappeared as of 2019 01 28.

Mahesh
  • 103
  • 1
  • 10
klacointe
  • 79
  • 4
  • We are having the same issues, along with many others errors that were previously working. We have not made code changes on our end, but a lot of functionality is currently broken. The sdk code has changed quite a bit this week, which you can see through the web archive https://web.archive.org/web/*/platform.linkedin.com/in.js – a.stringham Nov 15 '18 at 16:25
  • 1
    I'm receiving this error message: "Unhandled Promise Rejection: TypeError: null is not an object (evaluating 'this.self.location.replace')" which points to line 1434 in `in.js` and the offending code: ` return l()(e, t), a()(e, [{ key: "reload", value: function() { this.self.location.replace(P.call(this)), D.call(this) } }]), e ` – tupakapoor Nov 15 '18 at 17:19
  • same issue here. same error as @tupakapoor. – Cody Sand Nov 15 '18 at 22:46
  • This appears to be working now! – tupakapoor Nov 16 '18 at 06:33
  • Same issue right now, just appeared on Jan 28th, 2018, was working prior. – Orun Jan 28 '19 at 16:40
  • Same issue. Anyone got the solution to this. ? – Mukesh Joshi Jan 30 '19 at 12:07
  • @M.J Check my answer. – NavyCody Jan 30 '19 at 15:21

2 Answers2

1

Try replacing window.IN.User.authorize with window.IN.user.authorize

window.IN.user.authorize is returning a promise and success callback is executed post login success. Its weird but working if we replace User with user

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 !");
                });   
NavyCody
  • 492
  • 2
  • 10
0

Try this code. I did some changes and working fine for me. need to replace window.IN.User.authorize() TO 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>
sumit katiyar
  • 191
  • 2
  • 7