Last updated October 13, 2016. Created on September 22, 2010.
Edited by xurizaemon, Gomez_in_the_South, hsaraf, peterx. Log in to edit this page.

The LinkedIn Integration module provides integration with the LinkedIn API.

It bundles :

  • a main module, that does nothing on its own, but provides a few functions other modules can build on.
  • a LinkedIn Authentication sub-module, that let users login to a Drupal site using their LinkedIn account.
  • a LinkedIn Profile sub-module, that let users display parts of their LinkedIn profile within their user page.
  • a LinkedIn Status sub-module, that lets users update their LinkedIn status when creating/updating nodes or comments.

Installation/initial configuration

  1. LinkedIn Integration requires the OAuth.php library. You can either :
    • install the Oauth module from http://drupal.org/project/oauth (both version 6.x-2 and version 6.x-3 are supported). You don't need to activate it, the module only uses the library it provides.
    • download the OAuth.php library from http://code.google.com/p/oauth/ and specify the full path on the module admin interface
    • D7 version requires cURL.
    • Enable the base Linkedin module as usual.
    • Request an API key by registering at https://www.linkedin.com/secure/developer and creating a new application. Fill the required fields (name, etc) and pay attention to
      • provide an "Integration URL" : this field must match the URL of your server this means you'll need a separate key for each stage or development server.[@todo : is this still true ?]
      • leave the "Callback URL" blank, the module takes care of this.
    • Configuration : go to admin/config/services/linkedin and fill the "API key" and "Secret key" fields with the keys you got from https://www.linkedin.com/secure/developer. If you downloaded the library directly from http://code.google.com/p/oauth/, you should see an additional "OAuth library full path" field above : don't forget to include the filename.
    • Usage : Users will have to associate their LinkedIn account with their local Drupal account (at user/%user/edit/linkedin) to use any functionality provided by submodules.

    Troubleshooting

    If you encounter troubles, please check the following points :

    • Integration URL : integration url you gave at https://www.linkedin.com/secure/developer is the actual one from wich you are issuing request.
    • Callback URL : do not specifiy a callback url at https://www.linkedin.com/secure/developer.
    • Server time : an out of sync server will issue a wrong timestamp. Linkedin.com requires that the timestamp must be within 5 minutes of accurate.
    • Permissions : get sure users have the right to use the features provided by the submodule you are trying to use.

    Also, the module offers a "debug mode" (see admin/settings/linkedin) that will try to give useful infos.

    Developer use

    If you want to implement you own module, you can use the following :

    linkedin_get_profile_fields($uid, $fields = array ())
    

    Fetch fields from a LinkedIn profile. Copes with public/private LinkedIn profile depending on the currently logged in user.
    Parameters :
    $uid : the uid of the Drupal user.
    $fields : an array of field's names to retrieve (see https://developer.linkedin.com/docs/fields for a extensive list)
    Return value :
    A structured array of fields and their values (or the error message received from the API as an array)

    linkedin_get_fields($url, $tokens)
    

    Fetch fields from a LinkedIn profile.
    Parameters :
    $url : full request url to a LinkedIn API ressource (see API doc for syntax)
    $tokens : the user tokens, as an array containing keys 'token_key' and 'token_secret' with their value
    Return value :
    A structured array of fields and their values (or the error message received from the API as an array)

    linkedin_put_profile_field($uid, $body, $field = 'current-status')
    

    Let us 'put' data into user profile.
    Parameters :
    $uid : the uid of the user we want to access infos
    $body : The content to be sent.
    $field : the field we want to update. At now, only 'current-status' is available from the API.
    Return value :
    http answer from the API (or the error message as an array)

    hook_linkedin_user_settings_page($form_state, $account)
    

    Let modules add their form elements to the user preferences edit form at user/%user/edit/linkedin. Must return an array of form elements.

    hook_linkedin_admin_page()
    

    Let modules add their form elements to the admin settings at admin/settings/linkedin. Must return an array of form elements.

    hook_linkedin_user_edit_perms()
    

    Mainly useful only if you don't use any of the bundled sub-modules. This function is called from the access callback at user/%user/edit/linkedin to check if the user has the right to access his own LinkedIn setting ! It shall return an array of permissions, typically the return would be the same than the one from your hook_perm().
    Note that user is granted access if he has any permission implemented by a module using this hook. That mean you cannot deny access through this function and got to make checks in hook_linkedin_user_settings_page if you want to be selective on what to display to the user.

    Looking for support? Visit the Drupal.org forums, or join #drupal-support in IRC.