Softlink 1411124

Redactie

c't 11/2014, p. 124

c't Longitude

PHP Data Objects

Download Zip-bestand

Een Google-project maken voor authenticatie via OAuth (uitleg)

Klik in het menu van de Google Developers Console op de knop 'Create Project'  en typ onder 'Project Name' vervolgens de naam van het project, bijvoorbeeld 'my Longitude'.

Hierbij hoort een project-ID die voor alle diensten van Google geldt. Je kunt er een in het veld eronder selecteren of een laten genereren door op het pictogram met het ronde pijltje te klikken. Het kan een aantal seconden duren voordat Google het project heeft aangemaakt. Daarbij kan het lijken alsof er helemaal niets meer gebeurt, maar wees gerust. Op een gegeven moment zul je de hoofdpagina 'Overview' van het project te zien krijgen.

Klik in het menu links op 'APIs & auth/APIs' en er verschijnt een overzicht van de API's die Google beschikbaar stelt. Activeer de 'Google+ API'. Je hebt deze weliswaar niet nodig voor het feitelijke OAuth-proces, maar wel om de gebruikersnaam bij Google+ of de link naar de profielfoto op te vragen. De andere programmeerinterfaces heb je niet nodig en kun je rustig deselecteren. Of laat de rest van de standaardinstellingen gewoon voor wat het is.

In het menu 'Credentials/Create new client ID' genereer je vervolgens een zogenaamde client-ID - en wel voor een 'Web Application'. Met deze ID identificeert de web-applicatie zich bij de autorisatieserver. De server geeft namelijk alleen bekende clients het gewenste toegangstoken. Daarnaast kun je kiezen uit 'Service Account' (actieve services bij Google die de gebruiker vertegenwoordigen) en uit 'Installed Application' (mobiele of desktop-applicaties). Dat is hier echter niet aan de orde.

Typ in het veld 'Authorized Javascript origins' de URL (zonder pad) in, waaronder je website te bereiken is. Om alleen wat te experimenteren is een lokaal bereikbaar adres als http://localhost al prima. In het veld eronder ('Authorized redirect URI') moet de URL van de website inclusief pad komen te staan, bijvoorbeeld http://mijn.server.nl/longitude.

Deze omleidende URL moet je invoeren. Je hebt hem echter alleen nodig als je web-applicatie voor de communicatie via OAuth niet gebruikmaakt van de Google-API's (zoals de demo-applicatie hier), maar zelf met de servers van Google communiceert (zie alinea 3.1.2 in RFC 6749).

Met een klik op 'Create client ID' wordt de identiteit gecreëerd en zie je even later het resultaat in de browser verschijnen, bijvoorbeeld '936792585628.apps.googleusercontent.com'.

Zet deze ID in het script ajax/config.php van de broncode. Je vindt hier regels die als volgt uitzien:

if ($_SERVER['SERVER_NAME'] === 'localhost' && strpos($_SERVER['REQUEST_URI'], '/ctlat') === 0) {

$GOOGLE_OAUTH_CLIENT_ID ='794079768136.apps.googleusercontent.com';

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

}

elseif...

Plak hier achter $GOOGLE_OAUTH_CLIENT_ID de ID die hoort bij $_SERVER['SERVER_NAME'] en $_SERVER['REQUEST_URI'].

Volgens bovenstaand voorbeeld vervang je een else-blok gewoon door

// ...

else if ($_SERVER['SERVER_NAME'] === 'mijn.server.nl' && strpos($_SERVER['REQUEST_URI'], '/longitude') === 0){

$GOOGLE_OAUTH_CLIENT_ID = '936792585628.apps.googleusercontent.com';

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

}

elseif...

Daarnaast moet je de ID aan de array $VALID_OAUTH_CLIENT_IDS in het bestand ajax/globals.php toevoegen. De regels die er al staan, kun je gerust verwijderen.

Meer informatie vind je tenslotte in het artikel 'Onvoorwaardelijk vertrouwen' (c't 5/2014, p. 110).