Guida all'uso delle API OAuth2 per SocialAnime.it - Beta

Pagine disponibili

Flusso di utilizzo per un client

  1. Aprire test_authorize.php nel browser o via URL con ?client_id=ID_CLIENT.
  2. Eseguire il login nella pagina authorize.php e cliccare "Login & Autorizza".
  3. Il server reindirizza automaticamente a callback.php con l’authorization code.
  4. callback.php scambia il code con access token e refresh token tramite token.php.
  5. Usare l’access token per chiamare le API protette tramite resource.php o test_resource.php.
  6. Quando l’access token scade, usare refresh_token.php per ottenere un nuovo token. Se esiste già un token valido, verrà restituito quello esistente con il tempo residuo aggiornato.

Esempio chiamata API

GET /resource.php
Authorization: Bearer ACCESS_TOKEN

L’API risponderà con i dati dell’utente se il token è valido e ha i permessi corretti.

Esempi di chiamate cURL con risposta

1. Richiesta di autorizzazione (authorize)

curl -X GET "http://localhost/api-sa/public/authorize.php?client_id=ID_CLIENT"

Risposta tipica (redirect al callback con authorization code):

HTTP/1.1 302 Found
Location: http://localhost/api-sa/public/callback.php?code=AUTH_CODE

2. Scambio authorization code con access token e refresh token (token)

curl -X POST "http://localhost/api-sa/public/token.php" \
-d "grant_type=authorization_code" \
-d "code=AUTH_CODE" \
-d "client_id=ID_CLIENT" \
-d "client_secret=CLIENT_SECRET"

Risposta JSON:

{
    "access_token": {
        "value": "ACCESS_TOKEN",
        "token_type": "Bearer",
        "expires_in": 3600
    },
    "refresh_token": {
        "value": "REFRESH_TOKEN",
        "token_type": "Bearer",
        "expires_in": 2592000
    }
}

3. Uso dell’access token per chiamare API protette (resource)

curl -X GET "http://localhost/api-sa/public/resource.php" \
-H "Authorization: Bearer ACCESS_TOKEN"

Risposta JSON:

{
    "message": "Accesso riuscito!",
    "user_id": 123
}

4. Refresh dell’access token usando il refresh token

curl -X POST "http://localhost/api-sa/public/refresh_token.php" \
-d "client_id=ID_CLIENT" \
-d "refresh_token=REFRESH_TOKEN"

Risposta JSON:

{
    "access_token": {
        "value": "NEW_ACCESS_TOKEN",
        "token_type": "Bearer",
        "expires_in": 3600
    }
}

Messaggi e errori

Note pratiche