LinkedIn Integration with Drupal
How to send Message or Invitation to LinkedIn friends using Linkedin account with Drupal?
1) CreateLinkedIn Application
URL - https://www.linkedin.com/secure/developer
· Create LinkedIn Application
· Get Api Key and Secret Key
2) Use following Module for integration
· Linkedin - http://drupal.org/project/linkedin/
· OAuth- http://drupal.org/project/oauth
Set consumer key and secret Key then authenticate using OAuth. After authentication it will open a connection to LinkedIn. Once connected, you will be able to access the friends and their information.
function connection()
{
$consumer_key = ‘abcde’ // app key
$consumer_secret = ‘xyz’ // secret key
Send token to oauth for authentication
$consumer = new OAuthConsumer($consumer_key, $consumer_secret, NULL);
$base_url = "https://api.linkedin.com/uas/oauth";
$url = $base_url . "/requestToken";
$signature = new OAuthSignatureMethod_HMAC_SHA1();
$request = OAuthRequest::from_consumer_and_token($consumer, NULL, 'POST', $url);
$request->sign_request($signature, $consumer, NULL);
$header = $request->to_header("http://api.linkedin.com");
$provider = 'linkedin';
$tokens = db_fetch_array(db_query("SELECT * FROM {linkedin_token} WHERE uid = 120 AND type = 'access'")); // get token key and token secret from query
$token = array(
'token_key' => $tokens['token_key'],
'token_secret' => $tokens['token_secret'],
); // get login user token
$result = linkedin_get_fields('http://api.linkedin.com/v1/people/~/connections', $token);
// $result is array of connection of friends
}
This function sends Message to Friends
Send message()
{
$base_url = "http://api.linkedin.com/v1/people/~/mailbox";
$signature = new OAuthSignatureMethod_HMAC_SHA1();
$consumer_key = ‘c2tqvnglgfyq’ // app key
$consumer_secret = ‘hGEkm6Gdpc3ibjP9’ // secret key
$consumer = new OAuthConsumer($consumer_key, $consumer_secret, NULL);
$token = new OAuthConsumer($tokens['token_key'], $tokens['token_secret'], 1); // user key
$request = OAuthRequest::from_consumer_and_token($consumer, $token, "POST", $base_url);
// send URL
$request->sign_request($signature, $consumer, $token);
$header = $request->to_header("http://api.linkedin.com");
$friends_id=’abcdf43’;
// send you message using xml format
$xml_message_body .= '<?xml version="1.0" encoding="UTF-8"?>';
$xml_message_body .= '<mailbox-item>';
$xml_message_body .= '<recipients>';
$xml_message_body .= '<recipient>';
$xml_message_body .= '<person path="/people/' . $friends_id. '" />';
$xml_message_body .= '</recipient>';
$xml_message_body .= '</recipients>';
$xml_message_body .= '<subject>Flexibage Invitation</subject>';
$xml_message_body .= '<body>http://flexibadge.10jumps.org</body>';
$xml_message_body .= '</mailbox-item>';
$response = _linkedin_connections_http_request($base_url, $header, $xml_message_body);
}
The LinkedIn connection - http request function to post your request to server.
function _linkedin_connections_http_request($url, $header, $body = NULL) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_HTTPHEADER, array($header));
curl_setopt($ch, CURLOPT_URL, $url);
if ($body) {
curl_setopt($ch, CURLOPT_POST, 1);
if ($body == 'token_request') {
curl_setopt($ch, CURLOPT_POSTFIELDS, '');
} else {
curl_setopt($ch, CURLOPT_POSTFIELDS, $body);
curl_setopt($ch, CURLOPT_HTTPHEADER, array($header, 'Content-Type: text/xml;charset=utf-8'));
curl_setopt($ch, CURLOPT_POST, 1);
// It is important to set request to POST for sending messages.
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
}
}
// execute the curl call
$output = curl_exec($ch);
// get the http response code
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
// close the curl connection
curl_close($ch);
// check for success. An httpd status of 201 inicates success:
// see https://developer.linkedin.com/documents/messaging-between-connections-api
if ($http_code == '201') {
return $http_code;
} else {
// otherwise, return the xml $output
return $output;
}
}