Skip to main content
Service Account-authenticatie is ideaal voor toegang tot Google Sheets van server naar server. Er is geen gebruikersactie nodig: de applicatie zelf bewerkt de spreadsheets. Dit is geschikt voor geautomatiseerde taken en achtergrondjobs.

Gebruiksscenario’s

  • Server-naar-server-toegang — de app benadert Sheets zonder gebruikersactie
  • Geautomatiseerde systemen — achtergrondjobs, crontaken, automatische rapporten
  • Vaste spreadsheets — beheer van specifieke spreadsheets
  • Productieomgevingen — betrouwbare werking zonder toestemmingsflow voor gebruikers

Vereisten

  • Google Cloud Console-project
  • Google Sheets API en Google Drive API ingeschakeld
  • Beheerdersrechten voor het project

Installatie

1

Google Cloud-project aanmaken

  1. Ga naar de Google Cloud Console
  2. Maak een nieuw project aan of selecteer een bestaand project
  3. Noteer het project-ID
2

Benodigde API's inschakelen

  1. Ga naar APIs & Services > Library
  2. Zoek en schakel de volgende API’s in:
    • Google Sheets API
    • Google Drive API
3

Service Account aanmaken

  1. Ga naar APIs & Services > Credentials
  2. Klik op Create Credentials > Service Account
  3. Vul de gegevens van het Service Account in:
    • Service account name: een beschrijvende naam (bijvoorbeeld “Laravel Sheets App”)
    • Service account ID: wordt automatisch gegenereerd
    • Description: optioneel
  4. Klik op Create and Continue
  5. Sla beide optionele secties over en klik op Done
4

Service Account-key genereren

  1. Klik op de pagina Credentials op het aangemaakte Service Account
  2. Ga naar het tabblad Keys
  3. Klik op Add Key > Create new key
  4. Kies JSON als keyformaat
  5. Klik op Create
  6. Het JSON-bestand wordt automatisch gedownload
5

JSON-bestand opslaan

  1. Verplaats het gedownloade JSON-bestand naar storage/app/
  2. Hernoem het naar google-service-account.json
  3. Belangrijk: voeg het toe aan .gitignore om het uit versiebeheer te houden
6

.env-bestand configureren

Voeg het volgende toe aan .env:
7

Scopes instellen in config/google.php

8

Spreadsheets delen

Voor elke Google Sheets-spreadsheet:
  1. Open de spreadsheet in Google Sheets
  2. Klik op de knop Delen
  3. Kopieer het veld client_email uit het JSON-bestand
  4. Deel de spreadsheet met dit e-mailadres (bijvoorbeeld [email protected])
  5. Kies de rechten:
    • Kijker — alleen-lezen
    • Bewerker — lezen en schrijven
    • Eigenaar — volledige toegang (niet aanbevolen)

Gebruik

Na de configuratie wordt het Service Account automatisch gebruikt. Je hoeft geen accesstoken in te stellen.

Best practices voor beveiliging

1. Rechten van het Service Account beperken

  • Deel alleen de spreadsheets die nodig zijn
  • Gebruik Bewerker in plaats van Eigenaar
  • Controleer de toegangsrechten regelmatig

2. Keys veilig bewaren

  • Neem Service Account-keys niet op in versiebeheer
  • Sluit ze betrouwbaar uit via .gitignore
  • Sla ze in productie op een veilige plek buiten de webroot op
  • Roteer keys regelmatig

3. Uitrol naar productie

Aanvullende beveiligingsmaatregelen:
  • Sla de JSON-key op een veilige plek buiten de webroot op
  • Gebruik per omgeving een ander Service Account (ontwikkeling, staging, productie)
  • Monitor het gebruik van deze accounts in de Google Cloud Console
  • Log verdachte activiteit en stel waarschuwingen in

Referentie omgevingsvariabelen

Geavanceerde configuratie

JSON-string opslaan in een omgevingsvariabele

In plaats van het JSON-bestand als apart bestand op te slaan, kun je de JSON-string opslaan als omgevingsvariabele. Dit is geschikt voor CI/CD-omgevingen zoals GitHub Actions. Stap 1: voeg de JSON-string toe aan .env
Stap 2: decodeer de JSON-string in config/google.php
Met deze aanpak hoef je geen apart bestand op te slaan en kun je alles beheren via omgevingsvariabelen in je CI/CD-pipeline.

Problemen oplossen

Veelvoorkomende fouten

Fout “caller does not have permission”
  • Controleer of de spreadsheet is gedeeld met het e-mailadres van het Service Account
  • Controleer bij schrijfoperaties of de rechten minimaal Bewerker zijn
Fout “File not found”
  • Controleer of het pad naar het JSON-bestand klopt
  • Controleer of het bestand bestaat en door de webserver kan worden gelezen
Fout “API not enabled”
  • Controleer of de Google Sheets API en Google Drive API zijn ingeschakeld in de Google Cloud Console
  • Wacht na het inschakelen van de API’s enkele minuten
Fout “Invalid credentials”
  • Controleer of het JSON-keybestand geldig en niet beschadigd is
  • Controleer of het Service Account niet is verwijderd of uitgeschakeld
  • Controleer of het project-ID overeenkomt met je Google Cloud-project

Setup testen

Een testroute om je Service Account-setup te controleren:
Open deze testroute om te controleren of de Service Account-authenticatie correct is geconfigureerd.
Laatst gewijzigd op 6 september 2026