<docbook><section><title>OdsFacebookAPIKeySecretExUsage</title><title>Using Facebook OAuth key-secret Configuration Guidelines</title>Using Facebook OAuth key-secret Configuration Guidelines
<bridgehead class="http://www.w3.org/1999/xhtml:h2"> What?</bridgehead>
 Use Facebook 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 Facebook 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 Facebook: <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 Facebook API to use the generate from above Client ID</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 Facebook 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 Facebook account, which then will enable you to log in in your ODS XXX user dataspace using the Facebook account credentials.</listitem>
</itemizedlist><para> </para>
<bridgehead class="http://www.w3.org/1999/xhtml:h3"> Examples</bridgehead>
<para> </para>
<bridgehead class="http://www.w3.org/1999/xhtml:h4"> Prerequisites</bridgehead>
<itemizedlist mark="bullet" spacing="compact"><listitem>A <ulink url="http://facebook.com/">Facebook 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:h5"> Steps for Configuring Facebook API Key and Secret Key</bridgehead>
<span style="color: red">
      UNKNOWN tag:
      http://www.w3.org/1999/xhtml:h6 1 -- Get Facebook API Key and Secret Key for use with ODS</span>
<orderedlist spacing="compact"><listitem>Browse to &lt;<ulink url="https://developers.facebook.com/apps">https://developers.facebook.com/apps</ulink>&gt; and enter your Facebook use credentials: <ulink url="OdsFacebookAPIKeySecretExUsage/step1-1.png"><figure><graphic fileref="OdsFacebookAPIKeySecretExUsage/step1-1.png" /></figure></ulink> <ulink url="OdsFacebookAPIKeySecretExUsage/step1-2.png"><figure><graphic fileref="OdsFacebookAPIKeySecretExUsage/step1-2.png" /></figure></ulink> </listitem>
<listitem>Click on <emphasis>Create New App</emphasis>: <ulink url="OdsFacebookAPIKeySecretExUsage/step1-2a.png"><figure><graphic fileref="OdsFacebookAPIKeySecretExUsage/step1-2a.png" /></figure></ulink> <ulink url="OdsFacebookAPIKeySecretExUsage/step1-3.png"><figure><graphic fileref="OdsFacebookAPIKeySecretExUsage/step1-3.png" /></figure></ulink> </listitem>
<listitem>In the presented form: <orderedlist spacing="compact"><listitem>Enter application name, for ex.
 &quot;MyODSExample&quot; <ulink url="OdsFacebookAPIKeySecretExUsage/step1-4.png"><figure><graphic fileref="OdsFacebookAPIKeySecretExUsage/step1-4.png" /></figure></ulink> </listitem>
<listitem>Click &quot;Continue&quot;.
</listitem>
<listitem>Enter captch string: <ulink url="OdsFacebookAPIKeySecretExUsage/step1-5.png"><figure><graphic fileref="OdsFacebookAPIKeySecretExUsage/step1-6.png" /></figure></ulink> </listitem>
<listitem>Click &quot;Continue&quot;: </listitem>
<listitem>The application should be registered and you will be shown a <emphasis>API ID</emphasis> and <emphasis>Secret</emphasis> for the newly registered application.
 You can copy these now as you will need these in the steps that follow: <ulink url="OdsFacebookAPIKeySecretExUsage/step1-6.png"><figure><graphic fileref="OdsFacebookAPIKeySecretExUsage/step1-6.png" /></figure></ulink> </listitem>
</orderedlist></listitem>
<listitem><emphasis>Provide a Callback URL</emphasis> -- Click on &quot;Website with Facebook Login&quot; and enter 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> : <ulink url="OdsFacebookAPIKeySecretExUsage/step1-7.png"><figure><graphic fileref="OdsFacebookAPIKeySecretExUsage/step1-7.png" /></figure></ulink> </listitem>
<listitem>Click &quot;Save Changes&quot;.
<ulink url="OdsFacebookAPIKeySecretExUsage/step1-8.png"><figure><graphic fileref="OdsFacebookAPIKeySecretExUsage/step1-8.png" /></figure></ulink></listitem>
</orderedlist><span style="color: red">
      UNKNOWN tag:
      http://www.w3.org/1999/xhtml:h6 2 - Configure ODS to use your Facebook Consumer Key and Secret</span>
<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="OdsFacebookAPIKeySecretExUsage/step2-1.png"><figure><graphic fileref="OdsFacebookAPIKeySecretExUsage/step2-1.png" /></figure></ulink> </listitem>
<listitem>Log in as a Virtuoso+ODS user with Administrator privileges, e.g., dba.
<ulink url="OdsFacebookAPIKeySecretExUsage/step2-2.png"><figure><graphic fileref="OdsFacebookAPIKeySecretExUsage/step2-2.png" /></figure></ulink> </listitem>
<listitem>Click on <emphasis>Site Settings</emphasis>: <ulink url="OdsFacebookAPIKeySecretExUsage/step2-3.png"><figure><graphic fileref="OdsFacebookAPIKeySecretExUsage/step2-3.png" /></figure></ulink> </listitem>
<listitem>Click on <emphasis>Login Authentication Keys</emphasis>: <ulink url="OdsFacebookAPIKeySecretExUsage/step2-4.png"><figure><graphic fileref="OdsFacebookAPIKeySecretExUsage/step2-4.png" /></figure></ulink> </listitem>
<listitem>Select <emphasis>FacebookAPI</emphasis> in the <emphasis>API Name</emphasis> menu, provide the <emphasis>API Key</emphasis> and <emphasis>Secret</emphasis> from the new Facebook application you created above, and click <emphasis>Add</emphasis>.
<ulink url="OdsFacebookAPIKeySecretExUsage/step2-5.png"><figure><graphic fileref="OdsFacebookAPIKeySecretExUsage/step2-5.png" /></figure></ulink> </listitem>
<listitem>ODS is now configured to use Facebook.
<ulink url="OdsFacebookAPIKeySecretExUsage/step2-6.png"><figure><graphic fileref="OdsFacebookAPIKeySecretExUsage/step2-6.png" /></figure></ulink></listitem>
</orderedlist><para> </para>
<bridgehead class="http://www.w3.org/1999/xhtml:h4">Example for Configuring regular ODS user to log in into ODS using Facebook 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 Facebook 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="OdsFacebookAPIKeySecretExUsage/step3-1.png"><figure><graphic fileref="OdsFacebookAPIKeySecretExUsage/step3-1.png" /></figure></ulink> </listitem>
<listitem>Log in as a Virtuoso+ODS user with normal privileges, e.g., demo.
<ulink url="OdsFacebookAPIKeySecretExUsage/step3-2.png"><figure><graphic fileref="OdsFacebookAPIKeySecretExUsage/step3-2.png" /></figure></ulink> </listitem>
<listitem>Go to Profile Edit-&gt;Personal-&gt;Online Accounts: <ulink url="OdsFacebookAPIKeySecretExUsage/step3-3.png"><figure><graphic fileref="OdsFacebookAPIKeySecretExUsage/step3-3.png" /></figure></ulink> </listitem>
<listitem>Click &quot;Add&quot;: <ulink url="OdsFacebookAPIKeySecretExUsage/step3-4.png"><figure><graphic fileref="OdsFacebookAPIKeySecretExUsage/step3-4.png" /></figure></ulink> </listitem>
<listitem>In the presented form select service Facebook.
 By default the &quot;Member Home Page URI&quot; has  <ulink url="http://www.facebook.com/&lt;your-ODS-user-name&gt;">http://www.facebook.com/&lt;your-ODS-user-name&gt;</ulink>  and the &quot;Account URI&quot; has value  <ulink url="http://host:port/about/id/entity/http/www.facebook.com/&lt;your-ODS-user-name&gt;#this">http://host:port/about/id/entity/http/www.facebook.com/&lt;your-ODS-user-name&gt;#this</ulink> .
 You need to change the  &lt;your-ODS-user-name&gt;  from these URLs with your Facebook account name.
<ulink url="OdsFacebookAPIKeySecretExUsage/step3-4b.png"><figure><graphic fileref="OdsFacebookAPIKeySecretExUsage/step3-4b.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 Facebook Login is enabled from admin user available at Site Settings -&gt; Members Registrations: <ulink url="OdsFacebookAPIKeySecretExUsage/step3-5.png"><figure><graphic fileref="OdsFacebookAPIKeySecretExUsage/step3-5.png" /></figure></ulink> </listitem>
<listitem>Click Sign In.
</listitem>
<listitem>Go to &quot;Facebook&quot; tab: <ulink url="OdsFacebookAPIKeySecretExUsage/step3-6.png"><figure><graphic fileref="OdsFacebookAPIKeySecretExUsage/step3-6.png" /></figure></ulink> </listitem>
<listitem>Click &quot;Facebook Login&quot;.
</listitem>
<listitem>Facebook should ask you to for authorization for the created application from above: <ulink url="OdsFacebookAPIKeySecretExUsage/step3-7.png"><figure><graphic fileref="OdsFacebookAPIKeySecretExUsage/step3-7.png" /></figure></ulink> </listitem>
<listitem>Click &quot;Log In with Facebook&quot;: <ulink url="OdsFacebookAPIKeySecretExUsage/step3-8.png"><figure><graphic fileref="OdsFacebookAPIKeySecretExUsage/step3-8.png" /></figure></ulink> </listitem>
<listitem>On a successful authorization you should be redirected back to the ODS <ulink url="DataSpace">DataSpace</ulink>: <ulink url="OdsFacebookAPIKeySecretExUsage/step3-9.png"><figure><graphic fileref="OdsFacebookAPIKeySecretExUsage/step3-9.png" /></figure></ulink> </listitem>
<listitem>Click &quot;Facebook Login&quot; and should be logged in as the regular user from above, e.g: user &quot;demo&quot;.
<ulink url="OdsFacebookAPIKeySecretExUsage/step3-10.png"><figure><graphic fileref="OdsFacebookAPIKeySecretExUsage/step3-10.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="OdsLinkedInAPIKeySecretExUsage">Using LinkedIn -- 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>