Salesforce & LinkedIn Developer API: 401 – Unauthorized
I’m not going to get into the boilerplate code you’ll need in order to get OAuth up and running as it’s pretty straight forward, but I did run into a peculiar issue which took me some time to narrow down. To reproduce these steps you’ll need to:
- Correctly setup OAuth between the Force.com Platform and LinkedIn
- Authorise access to your LinkedIn account
- Attempt to fetch a resource using an API endpoint such as: http://api.linkedin.com/v1/people/~/network/updates?scope=self
When attempting to make the call out in step 3 you’ll get a “401 – Unauthorized” error. So to be clear OAuth is working perfectly but a call like this one will still result in the error.
After some troubleshooting I noticed that some API endpoints didn’t result in the error e.g. http://api.linkedin.com/v1/people/id=abcdefg/network/updates?scope=self. At this point I realised the issue was probably the tilde (‘~’) character in the URI.
Grasping at straws I manually replaced the tilde with it’s URL friendly equivalent ‘%7E’ and the callout worked perfectly. Now this is strange because I am, in the course of making the callout, URL encoding all parts of the endpoint URL. It seems that for some reason the LinkedIn OAuth services needs to have the tilde encoded twice when signing the request
Written by Wes
March 20, 2011 at 9:46 pm
3 Responses
Subscribe to comments with RSS.
Good to know.
d3developer
March 20, 2011 at 9:47 pm
I am facing the same issue.However I get a proper response for the link ‘http://api.linkedin.com/v1/people/~/network/updates’ but when the link is changed to ‘http://api.linkedin.com/v1/people/~/network/updates?scope=self’ my result matches yours
Unfortunately encoding the tilde doesnt work for me 😦
Rohit
April 28, 2011 at 12:32 pm
I have the same problem like Rohit has.
Valery Patskevich
April 18, 2012 at 11:32 am