LinkedIn – Salesforce Integration

Hello All, I am back with another Integration post and in this post, I will show how you can connect with LinkedIn from your salesforce org using a small piece of code.

So, Get ready to do another integration with Salesforce.

Before we start playing with the code we need to create a Custom Setting where we will store Access Token and Expiry time so that we could use this while making the callouts.

Setup Custom Object: –

Go to Setup -> Create -> Objects -> New -> Name it “LinkedIn Information

LinkedIn Informations

Create a VF page and Controller Class: –

Create an Apex class Name it “LinkedlnoAuthController

Go to Setup -> Develop -> Apex Classes -> New -> 

Next, Create a VF page that will do the Authorization with LinkedIn. Name it “LinkedlnoAuth“.

You will get the complete code from my GitHub Repo. Copy Apex Class and VF page code From Here.

After you created VF page Preview it, Copy the URL and paste somewhere into the notepad++ or any other text editor. URL will be something like below

https://dreamhouse-a-dev-ed–c.ap5.visual.force.com/apex/LinkedlnoAuth

Create an App in LinkedIn: –

Time to create a Connected App into LinkedIn developer account to get the Client Id (Consumer Key)  and Client Secret(Consumer Secret).

Go to LinkedIn Developer Console Create Application. Refer this link to get the complete picture of app configuration. You will get Client Id and Client Secret copy both and store in the text editor.

You LinkedIn app page will look like below

LinkedIn - Application

Make Required Changes into Apex Class: –

1 – Open LinkedlnoAuthController class replace redirect_URI with your VF page preview URI (line #10).

2 – Replace consumerKey with your client Id and consumerSecret with your Client Secret (line #8 and #9).

Now, we are all set to let’s do some testing and see if we have successfully integrated LinkedIn with Salesforce.

Open LinkedlnoAuth VF page and preview it. Click Connect with LinkedIn button, it will open a new screen asking your LinkedIn username and password

Connect with Linkedln

Linked Login

Enter your username and password then sign in Grant permission to Application -> Click Complete Authorization, a success message will show.

Linked Login.png

Now Click on Get Basic Info -> A basic information will show here in PAGE

Basic Info.png

Facing any issue let me know in the comment section.

Happy Coding 🙂 Enjoy Coding 🙂

Advertisements

20 thoughts on “LinkedIn – Salesforce Integration

  1. Deepika October 7, 2018 / 5:06 am

    Hi Amit,

    I am getting below error while clicking on “Complete Authorization”:
    Error:
    Unexpected Error while communicating with LinkedIn API. Status Bad Request and Status Code 400

    Please help.

    Thanks,
    Deepika Ghose

    Like

  2. RUSSELL July 10, 2018 / 1:26 pm

    Hi – do you have example code that shows how you replace the references to the custom setting with a custom object name and fields please.

    Like

    • Amit Singh July 11, 2018 / 5:04 pm

      Hi Russel,

      No. I do not have but I will post them soon with Custom Object and Updated Code.

      Like

      • Amit Singh July 12, 2018 / 5:07 am

        Hi Russel,

        I have updated the code to Use the Custom Object and also added a new feature by which you can share the post to Linkedin from the Code.

        Let me know if you have queries

        Like

  3. Akash April 15, 2018 / 1:22 pm

    Hi Amit,

    Thanks for providing such awesome implementation. It’s working perfect.!!

    I have below requirement. Please guide me:

    Req : I want to fetch my contact’s LinkedIn profile’s basic information (Salesforce standard contacts)

    Can you please guide me, what all changed needs to be done in your implementation to achieve my requirement?

    Any help would be highly appreciated

    Thanks a ton.!!

    Like

    • Amit Singh April 16, 2018 / 7:12 am

      Hi Akash,

      You want to fetch the Basic profile information of your Salesforce Contacts correct?
      To get the information of your contact your contact must authorize the application atleast once if contact has not authorized the linkedIn application then you can get their information.

      OR
      You wanted to fetch the LinkedIn contact information. If so refer below link for the same
      https://developer.linkedin.com/docs/guide/v2/people/connections-api#sample

      Like

      • Akash April 16, 2018 / 9:06 am

        Hi Amit,

        Thanks for the reply.!! Yes I want to fetch the basic profile information of my contact records.

        Can you please guide me below points :

        1) How my contacts should authorize the application? (If any code changes needed, please let me know)

        2) How to make the api callout request for specific contact’s LinkedIn’s basic profile information?

        Also, I’ve gone through the below link :

        https://developer.linkedin.com/support/faq

        It has been mentioned that LinkedIn doesn’t have any way to refresh the access token. So if the current access token get’s expired, is there any automated way we can update it in apex class?

        Thanks,
        Akash

        Like

      • Amit Singh April 16, 2018 / 10:23 am

        Akash,

        Put detail page button on the contact level which will open the LinkedIn authentication page and after you get the response from the LinkedIn save the response into the Custom Object.

        To refresh the access token Refer the given link
        https://developer.linkedin.com/docs/oauth2

        Like

  4. harish February 21, 2018 / 9:40 am

    when i click on get basic info I am getting this error…

    List index out of bounds: 0
    Error is in expression ‘{!doFetchBasicInfo}’ in component in page linkedlnoauth: Class.LinkedlnoAuthController.doFetchBasicInfo: line 100, column 1

    An unexpected error has occurred. Your development organization has been notified.

    when I click on complete authorization :
    Errors

    Access Token1: Access Token1: data value too large: AQUyRtz3_y2kJ7YnBVqXX8WEtKzUKw0hhH3_QTY1d0A_SCsIYiunij5HpNg5iu3FFIeyDTbOltLP3wp_1mpM2xmDais9F6IdFnU7Hwg0CFUKY6cF9BQh0dM1N2YbK2fztK4QSIEXVo8NdEHzop3elyt1GDcwXAzcWqa9qHr41MEWo1H6ndvctcxd84WKOScpcsxr11UBqVI3vJ2P3mC5QoVaT5LTaH3bK6cKmpAhmJgJ8k7RcyRvB9oVrb7913OMz_rDKP0qOm4SjB9JnJ1KR8nm9exQ_RRzc0nC4WHm6Nq8OgEScNYIXe55I_Ak-sUUPQbTh7IKFIxU1djAppLshNyEwO51Qg (max length=255)
    Unexpected Error while communicating with LinkedIn API. Status OK and Status Code 200
    CONFIRM
    Success:
    Congrattzzzzz….. You have done successfull Integration with Linkedln

    Like

    • Amit Singh February 21, 2018 / 12:53 pm

      Hi Harish,

      Need to check the below thing –
      1 – Access Token1: data value too large: Error because access token length is more than 255 Chars. As a solution Create a custom Object with the Exact Value and for Access and Refresh Token use TextArea Long instead of Text Field. And then use that custom Custom Object instead of LinkedIn_Token_Info__c Custom Setting

      Like

  5. hanitha February 7, 2018 / 5:19 am

    I have lot of job openings in my job opening object(salesforce) after completion of salesforce and linkedin authorization automatically whatever job postings are there in job opening object that all openings automatically should post in my linkedin

    pls Amith help me regarding this..how to do

    Like

    • Amit Singh February 7, 2018 / 7:32 am

      Hi Hanitha,

      For this we need to make some other API Call to post the Job form Salesforce to LinkedLn automaticlly. Let me do the test from my side and then I will post the code here in the comment Section.

      Like

    • Amit Singh February 7, 2018 / 11:21 am

      Hi Hanitha,

      I have checked and tested the same using the API Console of the LinkedIn and below are the details with the URL, header and body that you need to use while making callout from the salesforce.

      1- URL Endpoint – https://api.linkedin.com/v1/people/~/shares?format=json
      2 – Header – Content-Type : application/json
      3 – Header – x-li-format : json
      4 – Body in json format and below is sample body
      {
      “comment”: “Check out developer.linkedin.com!”,
      “content”: {
      “title”: “LinkedIn Developers Resources”,
      “description”: “Leverage LinkedIn’s APIs to maximize engagement”,
      “submitted-url”: “https://developer.linkedin.com”
      },
      “visibility”: {
      “code”: “anyone”
      }
      }

      In your case you need to develop the dynamic body and need to make the callout from the apex trigger with @future method.

      Hope this will be useful for you 🙂

      Regards,
      Amit

      Like

  6. hanitha February 7, 2018 / 5:13 am

    When i click on the complete authorization i am getting error:

    Error:
    Unauthorize endpoint: An Administer must go to Setup -> Administer -> Security Control -> Remote Site Setting and add https://www.linkedin.com/oauth/v2/accessToken Endpoint

    which access token end point i have to give

    Like

    • Amit Singh February 7, 2018 / 5:37 am

      Add -> “https://www.linkedin.com” url into the Remote Site Setting

      Like

  7. Ankit November 30, 2017 / 9:52 am

    Thanks for the solution, but I am facing issues during implementation of above example.

    I am using my developer (free) org, in this I am facing an issue while I am clicking on a “Complete Authorization” Button. facing this below issue:

    ———–
    Issue:
    15:06:47:863 USER_DEBUG [87]|DEBUG|#### Exception Excuted Class.selflearning.LinkedlnoAuthController.doGetAccessToken: line 76, column 1 Upsert failed. First exception on row 0; first error: STRING_TOO_LONG, Access Token: data value too large: AQXoXkOHB-jcDKI2Vehp3OJS2ajjzaPu-7CVLufzzqbxLPR0_R4sW3pSaJkZZVowRlpVjhptiUmV-Op-2bXDTa7CvBkcSwMBQxKpQQsWVw_FRPR97EsAbXvEIrJEamNfpOlyNAZZ0LdFwHHqyuFiUQqhIfbfH9NIK4GDbB2Xj46O4T_-_Z-pWM5cLjy2uwwGH0V2ldChwwJ0WgN7A7qAoLdgO2yC1zmBHQbKyRkNz1y5MWRQP8VWDYQvpp3Mu4_0DsyPijHY_VDuuxTmx30Tmhz1IKoJqVGtdL2GMcTgH4gt9pKz6i6oxC2ZDtWvmUaMldIxEaDJr_LzatOoqxRJ6b3Zk7TsVA (max length=255): [selflearning__Access_Token__c]

    ————-

    where field (selflearning__Access_Token__c) of custom setting is of text type with 255 max character.

    Have you any idea how to resolve this.

    Thanks in advance

    Like

    • Ankit November 30, 2017 / 11:24 am

      Thanks Amit Singh for the nice startUp. I did it

      Like

    • Amit Singh November 30, 2017 / 4:42 pm

      This issue is because that the value of Access Token is larger than 255 character. As an alternative create a custom object with the same attribute as custom setting and for access token create text area long field instead of Text and make the necessary changes into the code replace custom setting in the code.

      Like

      • Ankit December 5, 2017 / 6:28 am

        Hey Amit, thanks for reply.

        I did it by same logic on same day.

        Nice setup/plateform you are providing for learning.

        Keep it up. 🙂

        Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s