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>
Oneplus Audio Days
0 Comments