OAuth Integration
Byg sikre integrationer med Shoporama API ved hjælp af OAuth 2.0
Hvad er OAuth?
OAuth gør det muligt for eksterne applikationer at få sikker adgang til Shoporama API'et på vegne af dine brugere, uden at de skal dele deres login-oplysninger.
Sikker
Ingen deling af passwords. Brugerne logger ind direkte hos Shoporama
Nem integration
Standard OAuth 2.0 flow som du kender fra andre tjenester
Fleksibel
Vælg præcist hvilke rettigheder din app skal have
OAuth Flow - Trin for trin
Send bruger til Shoporama
Din app sender brugeren til Shoporamas OAuth endpoint
https://www.shoporama.dk/admin/oauth/login?
client_id=Din_App_Navn
redirect_uri=https://example.com/callback
state=unik_session_id
Bruger logger ind
Brugeren logger ind med sine Shoporama credentials og vælger:
- Hvilken shop der skal gives adgang til
- Adgangsniveau (læs, skriv eller fuld adgang)
Modtag API token
Efter godkendelse sendes brugeren tilbage til din app med token:
https://example.com/callback?
token=19e9994752fdd70c7372...
shop_url=demo.shoporama.dk
shop_name=Demo Shop
api_endpoint=https://www.shoporama.dk/REST
webshop_id=1
access_level=all
state=unik_session_id
Brug API'et
Brug token til at kalde Shoporama API:
curl -H "Authorization: 19e9994752fdd70c7372..." \
https://www.shoporama.dk/REST/product
Klar til at komme i gang?
Start med at teste OAuth flowet eller læs mere om API'et
Komplette Implementeringseksempler
Fuld OAuth flow implementation - klar til copy/paste
Vanilla PHP Implementation
Ren PHP uden frameworks - en enkelt fil der håndterer hele OAuth flowet
<?php
// oauth.php - Gem denne fil på din server
session_start();
// Konfiguration - RET DISSE VÆRDIER
$CLIENT_ID = "Dit App Navn";
$REDIRECT_URI = "https://din-side.dk/oauth.php";
$OAUTH_URL = "https://www.shoporama.dk/admin/oauth/login";
// Start OAuth
if (isset($_GET["login"])) {
$_SESSION["state"] = bin2hex(random_bytes(16));
$url = $OAUTH_URL . "?" . http_build_query([
"client_id" => $CLIENT_ID,
"redirect_uri" => $REDIRECT_URI,
"state" => $_SESSION["state"]
]);
header("Location: $url");
exit;
}
// Modtag token
if (isset($_GET["token"]) && $_GET["state"] === $_SESSION["state"]) {
$_SESSION["token"] = $_GET["token"];
$_SESSION["api_url"] = $_GET["api_endpoint"];
echo "Success! Token gemt.";
echo "
Test API";
exit;
}
// Test API
if (isset($_GET["test"]) && isset($_SESSION["token"])) {
$ch = curl_init($_SESSION["api_url"] . "/product?limit=1");
curl_setopt($ch, CURLOPT_HTTPHEADER, ["Authorization: " . $_SESSION["token"]]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
echo "" . htmlspecialchars($result) . "
";
exit;
}
// Start side
echo "Login med Shoporama";
?>
Sådan bruger du det:
- Kopier koden til en fil kaldet
oauth.php
- Ret
$CLIENT_ID
og$REDIRECT_URI
- Upload filen til din server
- Besøg siden og klik "Login med Shoporama"
Fejlfinding & Almindelige problemer
Almindelige OAuth fejl
access_denied
Brugeren afviste adgang. Vis en venlig besked og lad dem prøve igen.
invalid_client
Ukendt client_id. Tjek at din app navn er korrekt.
invalid_redirect_uri
Redirect URI matcher ikke. Skal være præcis samme URL.
state_mismatch
State parameter matcher ikke. Muligt CSRF angreb eller session timeout.
API fejl
401 Unauthorized
Token er ugyldig eller udløbet. Bed brugeren om at logge ind igen.
403 Forbidden
Token har ikke de nødvendige rettigheder. Tjek access_level.
429 Too Many Requests
Rate limit nået. Vent før næste request.
500 Server Error
Intern fejl. Prøv igen senere eller kontakt support.
Debug tips
Test med OAuth Test Client
Brug vores test client til at verificere din OAuth flow fungerer korrekt.
Test OAuth Flow →Log alle parametre
Log state, token og andre parametre for at debugge problemer.
Sikkerhed & Best Practices
Token opbevaring
- • Gem aldrig tokens i cookies eller localStorage
- • Brug server-side sessions eller krypteret database
- • Krypter tokens før opbevaring
- • Slet tokens når de ikke bruges længere
CSRF beskyttelse
- • Brug altid state parameter
- • Generer unik state for hver session
- • Verificer state i callback
- • Timeout state efter kort tid
HTTPS påkrævet
- • Brug kun HTTPS for redirect_uri
- • Alle API kald skal være over HTTPS
- • Undtagelse: localhost til udvikling
- • Tjek SSL certifikat gyldighed
Adgangsniveauer forklaret
Niveau | Beskrivelse | Tilladt | Ikke tilladt |
---|---|---|---|
read | Læseadgang til alle data | GET requests til alle endpoints | POST, PUT, DELETE requests |
write | Læse og skrive data | Alle HTTP metoder | Slette webshop, ændre ejerskab |
all | Fuld administratoradgang | Alt inkl. farlige operationer | Intet - fuld kontrol |
Anbefaling: Start med 'read' adgang under udvikling og opgradér kun til 'write' eller 'all' når det er nødvendigt for din applikations funktionalitet.
Komplet API Dokumentation
Se alle tilgængelige endpoints, metoder og parametre i vores REST API dokumentation
Se API Dokumentation