LinkedIn integration with Salesforce

LinkedIn integration with Salesforce 

public class LinkedInAuth {

    public String clientid{get;set;}

    public String clientSecret{get;set;}

    public String callback{get;set;}

    public String state {get;set;}

    public String code {get;set;}

    public String client_credentials {get;set;}

    public String accesstoken {get;set;}

    

    public LinkedInAuth(){

        callback ='https://atos-f3-dev-ed--c.visualforce.com/apex/LinkedInCodeAuth';

        

    }

    //endpoint = 'https://www.linkedin.com/oauth/v2/authorization'

    //GET https://www.linkedin.com/oauth/v2/authorization?response_type=code

    //&client_id={your_client_id}&redirect_uri={your_callback_url}

    //&state=foobar&scope=r_liteprofile%20r_emailaddress%20w_member_social

    public PageReference requestCode(){

      /*  String url = 'https://www.linkedin.com/oauth/v2/authorization?';

        url = url + 'grant_type=client_credentials';

        url = url + '&client_id='+clientid;

        url = url + '&client_secret='+clientSecret;*/

        

        String url = 'https://www.linkedin.com/oauth/v2/authorization?';

        url = url + 'response_type=code';

        url = url + '&client_id='+clientid;

        url = url + '&redirect_uri='+callback;

        url = url + '&state='+state;

        url = url + '&scope=r_liteprofile%20r_emailaddress';

   

        PageReference p = new PageReference(url);

        return p;

    }

    

    public void readCode(){

        code = ApexPages.currentPage().getParameters().get('code');

    }

    

    public void requestToken(){

        //grant_type=authorization_code&code={authorization_code_from_step2_response}

        //&redirect_uri={your_callback_url}&client_id={your_client_id}&client_secret={your_client_secret}

        String url ='https://www.linkedin.com/oauth/v2/accessToken';

        String body = 'grant_type=authorization_code';

        body = body + '&code='+code;

        body = body + '&redirect_uri='+callback;

        body = body + '&client_id='+clientid;

        body = body + '&client_secret='+clientSecret;

        

        Http h = new Http();

        HttpRequest req = new HttpRequest();

        req.setEndpoint(url);

        req.setMethod('POST');

        req.setBody(body);

        

        HttpResponse res =h.send(req);

        

        String jsonString = res.getBody();

        

        System.JSONParser jp = json.createParser(jsonString);

        while(jp.nextToken() != null){

            if(jp.getText() == 'access_token'){

                jp.nextToken();

                accesstoken = jp.getText();

            }

        }

    }

    

}

//vfpage home page

<apex:page controller="LinkedInAuth">

    <apex:form >

        <apex:pageBlock >

            <apex:pageBlockButtons location="top"> 

                <apex:commandButton value="Req Code" action="{!requestCode}" />

                

            </apex:pageBlockButtons>

            <apex:pageBlockSection columns="1">

                <apex:pageBlockSectionItem >

                    <apex:outputLabel value="Client id" />

                    <apex:inputText value="{!clientid}" size="80" />

                </apex:pageBlockSectionItem>

                <apex:pageBlockSectionItem >

                    <apex:outputLabel value="state" />

                    <apex:inputText value="{!state}" size="80" />

                </apex:pageBlockSectionItem>

                <apex:pageBlockSectionItem >

                    <apex:outputLabel value="redirect url" />

                    <apex:outputText value="{!callback}"  />

                </apex:pageBlockSectionItem>

                

            </apex:pageBlockSection>

        </apex:pageBlock>

    </apex:form>

</apex:page>

// VF Page get Access Token 

<apex:page controller="LinkedInAuth" action="{!readCode}">

  <apex:form >

        <apex:pageBlock >

            <apex:pageBlockButtons location="top"> 

                <apex:commandButton value="request Token " action="{!requestToken}" />

                

            </apex:pageBlockButtons>

            <apex:pageBlockSection columns="1">

                <apex:pageBlockSectionItem >

                    <apex:outputLabel value="Client id" />

                    <apex:inputText value="{!clientid}" size="80" />

                </apex:pageBlockSectionItem>

                <apex:pageBlockSectionItem >

                    <apex:outputLabel value="clientSecret" />

                    <apex:inputText value="{!clientSecret}" size="80" />

                </apex:pageBlockSectionItem>

                <apex:pageBlockSectionItem >

                    <apex:outputLabel value="code" />

                    <apex:outputText value="{!code}"  />

                </apex:pageBlockSectionItem>

                <apex:pageBlockSectionItem >

                    <apex:outputLabel value="redirect url" />

                    <apex:outputText value="{!callback}"  />

                </apex:pageBlockSectionItem>

                <apex:pageBlockSectionItem >

                    <apex:outputLabel value="access token" />

                    <apex:outputText value="{!accesstoken}"  />

                </apex:pageBlockSectionItem>

                

            </apex:pageBlockSection>

        </apex:pageBlock>

    </apex:form>

</apex:page>

Post a Comment

0 Comments