Softlink 1405110

Redactie

c't 5/2014, p. 110

Onvoorwaardelijk vertrouwen

c't Google OAuth demo

Download de broncode als ZIP-archief. Pak het archief uit en sla het op in een map dat je webserver op een HTTP-request kan leveren, bijvoorbeeld in D:/Developer/xampp/htdocs/ct-oauth-demo. Verder moet de map via de url http://localhost/ct-oauth-demo in de browser zijn aan te roepen.

In het script ajax/config.php van de broncode vind je ondermeer de volgende regels:

if ($_SERVER['SERVER_NAME'] === 'localhost' && strpos($_SERVER['REQUEST_URI'], '/ct-oauth-demo') === 0) {

self::$DB_PATH = 'D:/Developer/xampp';

self::$GOOGLE_OAUTH_CLIENT_ID = '336758185464-24sv6gmltpr9bt7nbtg38j5fbk7kv4l5.apps.googleusercontent.com';

self::$GOOGLE_OAUTH_CLIENT_SECRET = 'GEHEIM';

self::$GOOGLE_OAUTH_REDIRECT_URI = 'http://localhost/ct-oauth-demo';

}

else if ($_SERVER['SERVER_NAME'] === 'www.example.com' && strpos($_SERVER['REQUEST_URI'], '/ct-oauth-demo') === 0) {

self::$DB_PATH = '/var/www/sqlite';

self::$GOOGLE_OAUTH_CLIENT_ID = '336758185464-bfeuon5mamfh8iffhrvi3q218e4m6e95.apps.googleusercontent.com';

self::$GOOGLE_OAUTH_CLIENT_SECRET = 'GEHEIM';

self::$GOOGLE_OAUTH_REDIRECT_URI = 'http://www.example.com/ct-oauth-demo';

}

Hier worden afhankelijk van de aangevraagde url (http://localhost/ct-oauth-demo resp. http://www.example.com/ct-oauth-demo) enkele configuratieparameters geactiveerd. Gebruik je bijvoorbeeld zoals hierboven XAMPP als webserver op je lokale Windows-computer en heb je dat onder D:/Developer/xampp geïnstalleerd, dan moet ook de SQLite-database daar staan. Als je hiervoor liever een andere locatie gebruikt, moet je de regel achter self::$DB_PATH aanpassen.

Achter de variabelen self::$GOOGLE_OAUTH_CLIENT_ID, self::$GOOGLE_OAUTH_CLIENT_SECRET en self::$GOOGLE_OAUTH_REDIRECT_URI moet je de waarden voor 'Client ID', 'Client secret' en 'Redirect URIs' zetten die je in de projectinstellingen onder Google Developers Console kunt vinden onder 'APIs & auth/Credentials'.

Verder kun je onder 'Consent screen' bij het veld 'Product name' nog de naam van de app wijzigen (in ons geval dus 'c't OAuth demo') en een afbeelding uploaden vanaf een locatie op internet. Je vindt een aantal c't-logo's terug onder de map img.

Meer naar boven in het script vind je nog de volgende regels:

private static $VALID_OAUTH_CLIENT_IDS = array(

  '336758185464-24sv6gmltpr9bt7nbtg38j5fbk7kv4l5.apps.googleusercontent.com',

  '336758185464-bfeuon5mamfh8iffhrvi3q218e4m6e95.apps.googleusercontent.com'

);

Voer in de array alle client-ID's in die je voor het project hebt aangemaakt en geconfigureerd.

Database

Als je  http://localhost/ct-oauth-demo/ajax/install_db.php aanroept, wordt de database op de geconfigureerde locatie aangemaakt. Daarna kun je de demo uitproberen.

Google OAuth 2.0 Playground

Google+ Sign-In for server-side apps

Google+ Sign-In Button reference

RFC 6749, The OAuth 2.0 Authorization Framework

google-api-php-client

Lijst van actuele CA-certificaten in PEM-formaat