<docbook><section><title>OdsLinkedInAPIKeySecretExUsage</title><title>Using LinkedIn OAuth key-secret Configuration Guidelines</title>Using <ulink url="LinkedIn">LinkedIn</ulink> OAuth key-secret Configuration Guidelines
<bridgehead class="http://www.w3.org/1999/xhtml:h2"> What?</bridgehead>
 Use <ulink url="LinkedIn">LinkedIn</ulink> as 3rd party application for registering a new user or logging into ODS <ulink url="DataSpace">DataSpace</ulink> as already registered ODS User which account is associated with a given <ulink url="LinkedIn">LinkedIn</ulink> account.<para> </para>
<bridgehead class="http://www.w3.org/1999/xhtml:h2"> Why?</bridgehead>
 Makes the process of managing users register/log in activities easier.<para> </para>
<bridgehead class="http://www.w3.org/1999/xhtml:h2"> How?</bridgehead>
<para>In order to be able to register a new user or to log in into ODS Dataspace as already registered ODS user, you need to: </para>
<itemizedlist mark="bullet" spacing="compact"><listitem>Create ODS application within <ulink url="LinkedIn">LinkedIn</ulink>: <orderedlist spacing="compact"><listitem>Get an API Key -- for identification; </listitem>
<listitem>Get an Secret Key -- for hash salting; </listitem>
<listitem>Provide a Callback URL -- for request &amp; access token exchange via redirection.
</listitem>
</orderedlist></listitem>
<listitem>Configure as ODS Administrator in Site Settings-&gt;Login Authentication Keys the <ulink url="LinkedIn">LinkedIn</ulink> API to use the generate from above API and Secret Key.</listitem>
</itemizedlist><para>When the above is done, you can perform the following activities in ODS: </para>
<itemizedlist mark="bullet" spacing="compact"><listitem>Register in ODS using your <ulink url="LinkedIn">LinkedIn</ulink> credentials, or: </listitem>
<listitem>For a regular ODS user, for ex.
 with name XXX you can add in Profile-&gt;Personal-&gt;Online Accounts your <ulink url="LinkedIn">LinkedIn</ulink> account, which then will enable you to log in in your ODS XXX user dataspace using the <ulink url="LinkedIn">LinkedIn</ulink> account credentials.</listitem>
</itemizedlist><bridgehead class="http://www.w3.org/1999/xhtml:h2"> Examples</bridgehead>
<para> </para>
<bridgehead class="http://www.w3.org/1999/xhtml:h3"> Prerequisites</bridgehead>
<itemizedlist mark="bullet" spacing="compact"><listitem>A <ulink url="http://linkedin.com/">LinkedIn user account</ulink> </listitem>
<listitem>Administrative (DBA) access to a <ulink url="http://virtuoso.openlinksw.com/">Virtuoso Server</ulink> instance, on which the following have been installed -- <itemizedlist mark="bullet" spacing="compact"><listitem><ulink url="https://virtuoso.openlinksw.com/download/">ODS-Framework VAD package</ulink></listitem>
</itemizedlist></listitem>
</itemizedlist><para> </para>
<bridgehead class="http://www.w3.org/1999/xhtml:h4"> Steps for Configuring <ulink url="LinkedIn">LinkedIn</ulink> API Key and Secret Key</bridgehead>
<bridgehead class="http://www.w3.org/1999/xhtml:h5"> 1 -- Get <ulink url="LinkedIn">LinkedIn</ulink> API Key and Secret Key for use with ODS</bridgehead>
<orderedlist spacing="compact"><listitem>Browse to &lt;<ulink url="https://www.linkedin.com/secure/developer">https://www.linkedin.com/secure/developer</ulink>&gt; and enter your <ulink url="LinkedIn">LinkedIn</ulink> use credentials: <ulink url="OdsLinkedInAPIKeySecretExUsage/step1-1.png"><figure><graphic fileref="OdsLinkedInAPIKeySecretExUsage/step1-1.png" /></figure></ulink> <ulink url="OdsLinkedInAPIKeySecretExUsage/step1-2.png"><figure><graphic fileref="OdsLinkedInAPIKeySecretExUsage/step1-2.png" /></figure></ulink> </listitem>
<listitem>Click on <emphasis>Add New Application</emphasis>: <ulink url="OdsLinkedInAPIKeySecretExUsage/step1-2a.png"><figure><graphic fileref="OdsLinkedInAPIKeySecretExUsage/step1-2a.png" /></figure></ulink> <ulink url="OdsLinkedInAPIKeySecretExUsage/step1-3.png"><figure><graphic fileref="OdsLinkedInAPIKeySecretExUsage/step1-3.png" /></figure></ulink> </listitem>
<listitem>In the presented form: <orderedlist spacing="compact"><listitem>&quot;Company Info&quot; section: enter company details if such are required for new companies; </listitem>
<listitem>&quot;&quot;Application Info&quot; section: <orderedlist spacing="compact"><listitem>Enter a name for your <ulink url="LinkedIn">LinkedIn</ulink> client application to be known by, e.g., &quot;MySimpleExample&quot;; </listitem>
<listitem>Enter a description, e.g., &quot;My <ulink url="LinkedIn">LinkedIn</ulink> Example Application&quot;; </listitem>
<listitem>Enter Website URL, e.g., <ulink url="http://example.com/;">http://example.com/;</ulink> </listitem>
<listitem>Set &quot;Application Use&quot;; </listitem>
</orderedlist></listitem>
<listitem>&quot;Contact Info&quot; section: <orderedlist spacing="compact"><listitem>Enter developer contact email; </listitem>
<listitem>Enter phone for contact </listitem>
</orderedlist></listitem>
<listitem>&quot;OAuth User Agreement&quot; section: <orderedlist spacing="compact"><listitem><emphasis>Provide a Callback URL</emphasis> -- enter in &quot;OAuth Redirect URL&quot; your ODS site URL that should match the host of the ODS installation.
 For ex.
 if ODS runs at <ulink url="http://example.com/ods/">http://example.com/ods/</ulink> then the URL in the Facebook app should be <ulink url="http://example.com.com">http://example.com.com</ulink>; </listitem>
<listitem>Set language.
</listitem>
</orderedlist></listitem>
<listitem>&quot;Term of Service&quot; section: hatch the &quot;Agree&quot; check-box.
<ulink url="OdsLinkedInAPIKeySecretExUsage/step1-4.png"><figure><graphic fileref="OdsLinkedInAPIKeySecretExUsage/step1-4.png" /></figure></ulink> <ulink url="OdsLinkedInAPIKeySecretExUsage/step1-5.png"><figure><graphic fileref="OdsLinkedInAPIKeySecretExUsage/step1-5.png" /></figure></ulink> <ulink url="OdsLinkedInAPIKeySecretExUsage/step1-6.png"><figure><graphic fileref="OdsLinkedInAPIKeySecretExUsage/step1-6.png" /></figure></ulink> </listitem>
</orderedlist></listitem>
<listitem>Click &quot;Add Application&quot;.
</listitem>
<listitem>The application should be registered and you will be shown a <emphasis>API Key</emphasis> and <emphasis>Secret Key</emphasis> for the newly registered application.
 You can copy these now as you will need these in the steps that follow: <ulink url="OdsLinkedInAPIKeySecretExUsage/step1-7.png"><figure><graphic fileref="OdsLinkedInAPIKeySecretExUsage/step1-7.png" /></figure></ulink></listitem>
</orderedlist><bridgehead class="http://www.w3.org/1999/xhtml:h5"> 2 -- Configure ODS to use your <ulink url="LinkedIn">LinkedIn</ulink> Consumer Key and Secret</bridgehead>
<orderedlist spacing="compact"><listitem>Browse to your Virtuoso + ODS instance, http://&lt;cname&gt;[:&lt;port&gt;]/ods, e.g., &lt;<ulink url="http://example.com/ods/">http://example.com/ods/</ulink>&gt;, and click <emphasis>Sign In</emphasis>.
<ulink url="OdsLinkedInAPIKeySecretExUsage/step2-1.png"><figure><graphic fileref="OdsLinkedInAPIKeySecretExUsage/step2-1.png" /></figure></ulink> </listitem>
<listitem>Log in as a Virtuoso+ODS user with Administrator privileges, e.g., dba.
<ulink url="OdsLinkedInAPIKeySecretExUsage/step2-2.png"><figure><graphic fileref="OdsLinkedInAPIKeySecretExUsage/step2-2.png" /></figure></ulink> </listitem>
<listitem>Click on <emphasis>Site Settings</emphasis>: <ulink url="OdsLinkedInAPIKeySecretExUsage/step2-3.png"><figure><graphic fileref="OdsLinkedInAPIKeySecretExUsage/step2-3.png" /></figure></ulink> </listitem>
<listitem>Click on <emphasis>Login Authentication Keys</emphasis>: <ulink url="OdsLinkedInAPIKeySecretExUsage/step2-4.png"><figure><graphic fileref="OdsLinkedInAPIKeySecretExUsage/step2-4.png" /></figure></ulink> </listitem>
<listitem>Select <emphasis>LinkedInAPI</emphasis> in the <emphasis>API Name</emphasis> menu, provide the <emphasis>API Key</emphasis> and <emphasis>Secret Key</emphasis> from the new <ulink url="LinkedIn">LinkedIn</ulink> application you created above, and click <emphasis>Add</emphasis>.
<ulink url="OdsLinkedInAPIKeySecretExUsage/step2-5.png"><figure><graphic fileref="OdsLinkedInAPIKeySecretExUsage/step2-5.png" /></figure></ulink> </listitem>
<listitem>ODS is now configured to use LinkedIn.
<ulink url="OdsLinkedInAPIKeySecretExUsage/step2-6.png"><figure><graphic fileref="OdsLinkedInAPIKeySecretExUsage/step2-6.png" /></figure></ulink></listitem>
</orderedlist><para> </para>
<bridgehead class="http://www.w3.org/1999/xhtml:h3">Example for Configuring regular ODS user to log in into ODS using <ulink url="LinkedIn">LinkedIn</ulink> Account credentials</bridgehead>
<para>Here is a sample scenario how to configure a regular ODS user to be able to log in in its ODS Dataspace using his/her own <ulink url="LinkedIn">LinkedIn</ulink> Account:</para>
<orderedlist spacing="compact"><listitem>Browse to your Virtuoso + ODS instance, http://&lt;cname&gt;[:&lt;port&gt;]/ods, e.g., &lt;<ulink url="http://example.com/ods/">http://example.com/ods/</ulink>&gt;.
<ulink url="OdsLinkedInAPIKeySecretExUsage/step3-1.png"><figure><graphic fileref="OdsLinkedInAPIKeySecretExUsage/step3-1.png" /></figure></ulink> </listitem>
<listitem>Log in as a Virtuoso+ODS user with normal privileges, e.g., demo.
<ulink url="OdsLinkedInAPIKeySecretExUsage/step3-2.png"><figure><graphic fileref="OdsLinkedInAPIKeySecretExUsage/step3-2.png" /></figure></ulink> </listitem>
<listitem>Go to Profile Edit-&gt;Personal-&gt;Online Accounts: <ulink url="OdsLinkedInAPIKeySecretExUsage/step3-3.png"><figure><graphic fileref="OdsLinkedInAPIKeySecretExUsage/step3-3.png" /></figure></ulink> </listitem>
<listitem>Click &quot;Add&quot;: <ulink url="OdsLinkedInAPIKeySecretExUsage/step3-4.png"><figure><graphic fileref="OdsLinkedInAPIKeySecretExUsage/step3-4.png" /></figure></ulink> </listitem>
<listitem>In the presented form select service <ulink url="LinkedIn">LinkedIn</ulink>.
 By default the &quot;Member Home Page URI&quot; has  <ulink url="http://linkedin.com/in/&lt;your-ODS-user-name&gt;">http://linkedin.com/in/&lt;your-ODS-user-name&gt;</ulink>  and the &quot;Account URI&quot; has value  <ulink url="http://host:port/about/id/entity/http/linkedin.com/in/&lt;your-ODS-user-name&gt;#this">http://host:port/about/id/entity/http/linkedin.com/in/&lt;your-ODS-user-name&gt;#this</ulink> .
 You need to change the  &lt;your-ODS-user-name&gt;  from these URLs with your <ulink url="LinkedIn">LinkedIn</ulink> account name.
<ulink url="OdsLinkedInAPIKeySecretExUsage/step3-4b.png"><figure><graphic fileref="OdsLinkedInAPIKeySecretExUsage/step3-4b.png" /></figure></ulink> </listitem>
<listitem>Click the &quot;Link&quot; button from &quot;Action&quot; column: <ulink url="OdsLinkedInAPIKeySecretExUsage/step3-4a.png"><figure><graphic fileref="OdsLinkedInAPIKeySecretExUsage/step3-4a.png" /></figure></ulink> </listitem>
<listitem>Finally click &quot;Save&quot;.
</listitem>
<listitem>Log out from ODS <ulink url="DataSpace">DataSpace</ulink>.
</listitem>
<listitem>Make sure <ulink url="LinkedIn">LinkedIn</ulink> Login is enabled from admin user available at Site Settings -&gt; Members Registrations: <ulink url="OdsLinkedInAPIKeySecretExUsage/step3-5.png"><figure><graphic fileref="OdsLinkedInAPIKeySecretExUsage/step3-5.png" /></figure></ulink> </listitem>
<listitem>Click Sign In.
</listitem>
<listitem>Go to &quot;<ulink url="LinkedIn">LinkedIn</ulink>&quot; tab: <ulink url="OdsLinkedInAPIKeySecretExUsage/step3-6.png"><figure><graphic fileref="OdsLinkedInAPIKeySecretExUsage/step3-6.png" /></figure></ulink> </listitem>
<listitem>Click &quot;<ulink url="LinkedIn">LinkedIn</ulink> Login&quot;.
</listitem>
<listitem><ulink url="LinkedIn">LinkedIn</ulink> should ask you to for authorization for the created application from above: <ulink url="OdsLinkedInAPIKeySecretExUsage/step3-7.png"><figure><graphic fileref="OdsLinkedInAPIKeySecretExUsage/step3-7.png" /></figure></ulink> </listitem>
<listitem>Click &quot;Allow Access&quot; in the <ulink url="LinkedIn">LinkedIn</ulink> form.
</listitem>
<listitem>On a successful authorization you should be redirected back to the ODS <ulink url="DataSpace">DataSpace</ulink> and should be logged in as the regular user from above, e.g: user &quot;demo&quot;.
<ulink url="OdsLinkedInAPIKeySecretExUsage/step3-8.png"><figure><graphic fileref="OdsLinkedInAPIKeySecretExUsage/step3-8.png" /></figure></ulink></listitem>
</orderedlist><bridgehead class="http://www.w3.org/1999/xhtml:h2">Related</bridgehead>
<itemizedlist mark="bullet" spacing="compact"><listitem><ulink url="OdsSetLoginAuthenticaionKeys">Set up Login Authentication Keys in ODS</ulink> <orderedlist spacing="compact"><listitem>Examples using 3rd Party Accounts for register/log in in ODS <ulink url="DataSpace">DataSpace</ulink>: </listitem>
</orderedlist><itemizedlist mark="bullet" spacing="compact"><listitem><ulink url="OdsFacebookAPIKeySecretExUsage">Using Facebook -- OAuth consumer key-secret Configuration Guidelines</ulink> </listitem>
<listitem><ulink url="OdsTwitterAPIKeySecretExUsage">Using Twitter -- OAuth consumer key-secret Configuration Guidelines</ulink> </listitem>
</itemizedlist><orderedlist spacing="compact"><listitem>Examples using 3rd Party Services for data management: <itemizedlist mark="bullet" spacing="compact"><listitem><ulink url="OdsBriefcaseAmazonS3">Using ODS-Briefcase to mediate access to data stored on Amazon S3</ulink> </listitem>
<listitem><ulink url="OdsBriefcaseBoxNet">Using ODS-Briefcase to mediate access to data stored on Box (a/k/a box.com or box.net)</ulink> </listitem>
<listitem><ulink url="OdsBriefcaseDropBox">Using ODS-Briefcase to mediate access to data stored on DropBox</ulink> </listitem>
<listitem><ulink url="OdsBriefcaseGoogleDrive">Using ODS-Briefcase to mediate access to data stored on Google Drive</ulink> </listitem>
<listitem><ulink url="OdsBriefcaseSkyDrive">Using ODS-Briefcase to mediate access to data stored on Microsoft OneDrive (formerly SkyDrive)</ulink> </listitem>
</itemizedlist></listitem>
</orderedlist></listitem>
<listitem>Virtuoso Cartridges Configuration: <itemizedlist mark="bullet" spacing="compact"><listitem><ulink url="http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/VirtCartConfigFacebook">Facebook Cartridge - Configuration Guidelines</ulink> </listitem>
<listitem><ulink url="http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/VirtCartConfigGooglePlus">Google+ Cartridge - Configuration Guidelines</ulink> </listitem>
<listitem><ulink url="http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/VirtCartConfigLinkedIn">LinkedIn Cartridge - Configuration Guidelines</ulink> </listitem>
<listitem><ulink url="http://virtuoso.openlinksw.com/dataspace/dav/wiki/Main/VirtCartConfigTwitter">Twitter Cartridge - Configuration Guidelines</ulink> </listitem>
</itemizedlist></listitem>
<listitem><ulink url="VirtOAuthControllers">OAuth Generate Keys for ODS Controllers (Web Services)</ulink> </listitem>
<listitem><ulink url="http://virtuoso.openlinksw.com/wiki/main/Main/VirtuosoOAuthProgrammersGuide">Use OAuth for authentication, SPARQL queries, Ubiquity commands</ulink> </listitem>
<listitem><ulink url="VirtOAuthTestTool">Use the Virtuoso OAuth Test tool to manage my Data Space data</ulink> </listitem>
<listitem><ulink url="VirtuosoOdsControllers">Manipulate User Data via REST using authentication based on OAuth, sessions, or password hash</ulink> </listitem>
<listitem><ulink url="ODSProgrammersGuide">ODS Programmers&#39; Guide</ulink> </listitem>
<listitem><ulink url="http://virtuoso.openlinksw.com/wiki/main/Main/VirtuosoOAuthProgrammersGuide">Virtuoso OAuth Programmers&#39; Guide</ulink> </listitem>
<listitem><ulink url="VirtOAuthExamples">Examples of ODS Application Authentication using OAuth</ulink> </listitem>
<listitem><ulink url="VirtuosoOdsUbiquityTutorialsOAuth">OAuth Ubiquity Tutorial</ulink> </listitem>
<listitem><ulink url="http://virtuoso.openlinksw.com/wiki/main/Main/VirtOAuthSPARQL">SPARQL OAuth Tutorial</ulink></listitem>
</itemizedlist></section></docbook>