Get linkedin Access Token with JavaScript SDK
Asked Answered
M

1

16

I am working on that application allow user to connect to linkedin (using javascript). I want to store access token that I got from IN.ENV.auth.oauth_token because I will use it to post to user's timeline.

But when I use this access token to post to Linkedin, I got "Invalid access token" error. Did I use correct access token? How's the correct way to get Access token?

Here's my code:

$("#linkedin-connect").on('click',function(e){  
    e.preventDefault();
    IN.UI.Authorize().place();
    IN.Event.on(IN, "auth", OnLinkedInAuth);  
    return false;
});

function OnLinkedInAuth() {
    console.debug("oauth token:" + IN.ENV.auth.oauth_token);
}

JSFiddle Example

Microsporangium answered 22/7, 2015 at 3:42 Comment(10)
Did you get that token from an OAuth authentication using the LinkedIn API?Baras
I followed the instructions here developer.linkedin.com/docs/js-sdk. On the callback function I captured IN.ENV.auth.oauth_token; If its not the correct acces token, how's the correct way to get it?Microsporangium
Please show us the code you used to get the IN.ENV.auth.oauth_token.Baras
I put the code here jsfiddle.net/rsakura/osar4po0. Thanks, really appreciate your help.Microsporangium
So it looks like there is no answers ?Jaleesa
Where do yo do the POST request? It may be that you are using an OAuth 1 token and it needs an OAuth 2 token. If you do it from the library itself, it may be that your token has expired and you need to call refresh method to refresh the token.Xyloid
Its a guess - I think when using javascript SDK it gives an oauth token with short expiry time and its not permanent. If you are using a backend code to get the oauth token it might be a permanent token.Anthropometry
The oauth tokens you get via JS api cannot be used server-side. I have debugged how JS uses them and they are passed via "oauth_token: ..." HTTP header instead of the "Authorization: Bearer ...". However when you try it that way from your server-side you will get the error "[unauthorized]. IP Address Mismatch" back from LinkedIn. Apparently they link the client IP address with the oauth token. Honestly I think the JS API is completely useless like this because if you can't verify/use the token server-side you basically cannot trust any of the information.Hagiocracy
@Hagiocracy have you find any solution to this as I am also struggling with same issueSufi
@vinitpayal I ended up using their REST API insteadHagiocracy
R
1

this event IN.Event.on(IN, "auth", OnLinkedInAuth); should pass some data to your function OnLikedInAuth as in shown in the documentation of the sdk.

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

<script type="text/javascript">

// Setup an event listener to make an API call once auth is complete
function onLinkedInLoad() {
    IN.Event.on(IN, "auth", getProfileData);
}

// Handle the successful return from the API call
function onSuccess(data) {
    console.log(data);
}

// Handle an error response from the API call
function onError(error) {
    console.log(error);
}

// Use the API call wrapper to request the member's basic profile data
function getProfileData() {
    IN.API.Raw("/people/~").result(onSuccess).error(onError);
}

As that example (available in docs) the getProfileData (similar to your OnLinkedInAuth) returns a Promise and when it's resolved will give you some data that you need to read. In that object you will find the token that you can store (LocalStorage) and use

Royden answered 15/11, 2017 at 10:25 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.