Collegare un software di terzi a un account Grand Shooting con OAuth 2.0: l'utente autorizza l'applicazione, che riceve il proprio token, senza scambio di password né di chiave API.
Una chiave API va bene per un'integrazione interna: un account, uno script, una chiave. Non appena il vostro software si rivolge a più clienti Grand Shooting, usate un'applicazione OAuth (chiamata "plugin" nell'API):
Un'applicazione appartiene all'account del suo editore. È definita da:
| Elemento | Ruolo |
|---|---|
client_id, client_secret | Credenziali OAuth dell'applicazione, fornite da Grand Shooting. Il segreto non deve mai lasciare il vostro server. |
URL di callback (redirect_uri) | Indirizzo a cui Grand Shooting rimanda l'utente dopo l'autorizzazione. Deve corrispondere esattamente a quello inviato nella richiesta (gli indirizzi locali localhost / 127.0.0.1 sono accettati su qualsiasi porta, per lo sviluppo). |
| URL di attivazione | Pagina della vostra applicazione aperta quando un account attiva il connettore: è lei che avvia il flusso OAuth. |
| URL di monitoraggio (poll status) | Interrogato durante l'attivazione per mostrare l'avanzamento all'utente. |
| URL di disattivazione | Chiamato quando l'account disattiva il connettore. |
Questi URL si configurano nel portale sviluppatori di Grand Shooting, dove trovate anche il vostro client_id e potete rinnovare il client_secret. Per creare un'applicazione e renderla disponibile agli account clienti, contattate il team Grand Shooting (help@grand-shooting.com).
Grand Shooting implementa il flusso Authorization Code di OAuth 2.0, con PKCE (S256) facoltativo, consigliato. Il server di autorizzazione è https://api.grand-shooting.com/oauth/default; i suoi metadati sono pubblicati su https://api.grand-shooting.com/.well-known/oauth-authorization-server.
GET https://api.grand-shooting.com/oauth/default/authorize
?response_type=code
&client_id=gs_123_xxxxxxxx
&redirect_uri=https%3A%2F%2Fmiaapp.example%2Fcallback
&state=<valore casuale>
&code_challenge=<challenge>&code_challenge_method=S256
L'utente si collega a Grand Shooting, poi accetta o rifiuta l'accesso. Se accetta, torna sul vostro redirect_uri con ?code=…&state=…; se rifiuta, con ?error=access_denied&state=…. Verificate sempre che state sia quello che avete inviato.
Il codice è monouso: scambiatelo subito, dal vostro server.
curl -X POST https://api.grand-shooting.com/oauth/default/token \
-d grant_type=authorization_code \
-d code=$CODE \
-d redirect_uri=https://miaapp.example/callback \
-d client_id=$CLIENT_ID \
-d client_secret=$CLIENT_SECRET \
-d code_verifier=$VERIFIER
{
"access_token": "…",
"token_type": "Bearer",
"expires_in": 31536000,
"refresh_token": "…",
"account_id": 10229487
}
Il token di accesso e il token di aggiornamento sono validi un anno. Salvateli per account_id: uno stesso utente del vostro software può collegare più account Grand Shooting.
Il token OAuth si passa con il prefisso access_token, non Bearer (riservato alle chiavi API):
curl -H "Authorization: access_token $ACCESS_TOKEN" https://api.grand-shooting.com/v3/account/me
Tutta l'API è poi accessibile come con una chiave: vedere Primi passi con l'API. GET https://api.grand-shooting.com/oauth/default/user/info (con Authorization: Bearer <access_token>) restituisce l'utente e l'account che hanno autorizzato l'applicazione.
curl -X POST https://api.grand-shooting.com/oauth/default/token \
-d grant_type=refresh_token \
-d refresh_token=$REFRESH_TOKEN \
-d client_id=$CLIENT_ID \
-d client_secret=$CLIENT_SECRET
Ogni aggiornamento restituisce una nuova coppia di token e invalida il vecchio token di aggiornamento: salvate sempre la nuova coppia.
Non ci sono scope: il token dà all'applicazione i diritti dell'utente che l'ha autorizzata, sul suo account. Chiedete ai vostri clienti di autorizzare l'applicazione con un utente i cui diritti corrispondano a ciò di cui ha bisogno.
Lato cliente, l'installazione si fa in pochi clic:
plugin_id come parametro), che reindirizza verso /authorize (passo 1 qui sopra).account_id, plugin_id e user_uid); si aspetta uno stato JSON wait, pick, ok o error.curl -X PATCH -H "Authorization: access_token $ACCESS_TOKEN" -H "Content-Type: application/json" \
-d '{"active":true}' https://api.grand-shooting.com/v3/account/plugin/{plugin_id}
Alla disattivazione, Grand Shooting chiama il vostro URL di disattivazione in DELETE, con account_id come parametro: eliminate allora i token di quell'account.
Un account Grand Shooting è servito da un server della piattaforma (vedere api_host in /account/me), e un token OAuth è valido solo sul server che lo ha emesso. Se i vostri clienti si trovano su server diversi, contattate Grand Shooting per conoscere l'indirizzo di autorizzazione da usare.