Cees in Cyberspace

Tips & Scripts...

 

Stappenplan om een Google API Access Token te krijgen

Stappenplan om een Google API Access Token te krijgen
Ik moet eerlijk toegeven dat ik dol ben op de mogelijkheden die Google biedt op het gebied van apps en integraties, maar dat ik altijd weer moet zuchten als ik me door bergen verwarrende documentatie en summiere code voorbeelden moet worstelen. Niet iedereen werkt met een Composer library, Google! Maar goed, ik moest een access token hebben om vanuit een MySQL database automatisch een Google Sheet aan te vullen met gegevens. En omdat zowel anderen als ikzelf in de toekomst dit vast nog wel een keer moeten doen, volgt hieronder een stappenplan(netje):
  1. Ga naar het Google Cloud Platform, log in met je Google account en maak een nieuw project aan
  2. Selecteer dat nieuwe project
  3. Voeg via de optie Library in het linkermenu de API’s toe die je nodig hebt
  4. Ga vervolgens in hetzelfde menu naar Credentials en vervolgens naar Create Credentials en maak een oAuth client ID aan met als Authorized redirect URI tenminste: https://developers.google.com/oauthplayground
  5. Je hebt voor oAuth authenticatie een consent screen nodig en waarschijnlijk vraagt het GCP je dan ook om dit aan te maken. Gebruik de scopes: /auth/userinfo.email, /auth/userinfo.profile, openid. Neem het consent screen in productie
  6. Sla het client ID en het secret op bij je zojuist aangemaakte oAuth client ID ergens op
  7. Ga naar https://developers.google.com/oauthplayground
  8. Select and authorize in het linkermenu tenminste 1 van de API’s die je nodig hebt
  9. Zorg dat via het tandwieltje rechtsboven “Use your own OAuth credentials” hebt aangevinked en je client ID en client secret hebt ingevuld!!
  10. Druk nu op Authorize API’s
  11. Selecteer in het consent screen het Google Account waarmee je ingelogd bent. Negeer meldingen over onveiligheid door via de Advanced-optie van je browser verder te gaan. Geef vervolgens toestemming voor alles.
  12. Je ziet nu in je linkerbalk een werkende Authorization Code staan. Druk op “Exchange authorization code for tokens” om een refresh token te krijgen
  13. Met dat refresh token kun je altijd een (nieuw) access token aanvragen, dus je moet dit refresh token elke keer aanroepen als je een call naar een Google API doet. Dat kun je doen door de volgende (PHP) cURL code:
$ch = curl_init();
$url = 'https://accounts.google.com/o/oauth2/token';
$data = array(
    "grant_type" => "refresh_token",
    "refresh_token" => "XXXXX",
    "client_id" => "YYYYYY",
    "client_secret" => "ZZZZZZZ"
  );

$data_string = json_encode($data);
$headr = array();
$headr[] = 'Content-type: x-www-form-urlencoded';
$headr[] = 'Accept: application/json';
curl_setopt_array($ch, array(
    CURLOPT_HTTPHEADER => $headr,
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_URL => $url,
    CURLOPT_POST => 1,
    CURLOPT_POSTFIELDS => $data_string
));
$result = curl_exec($ch);
//$statusCode = curl_getInfo($ch, CURLINFO_RESPONSE_CODE);
curl_close($ch);
$result = json_decode($result,true);
echo $result["access_token"];