ID regione
L'elemento REGION_ID è un codice abbreviato che Google assegna in base alla regione selezionata quando crei l'app. Il codice non corrisponde a un paese o a una provincia, anche se alcuni ID regione possono sembrare simili ai codici di paesi e province di uso comune. Per le app create dopo
febbraio 2020, REGION_ID.r è incluso negli
URL di App Engine. Per le app esistenti create prima di questa data, l'
ID regione è facoltativo nell'URL.
Scopri di più sugli ID regione.
L'API App Identity consente a un'applicazione di scoprire il proprio ID applicazione (chiamato anche ID progetto). Utilizzando l'ID, un'applicazione App Engine può affermare la propria identità ad altre app App Engine, alle API di Google e ad applicazioni e servizi di terze parti. L'ID applicazione può essere utilizzato anche per generare un URL o un indirizzo email o per prendere una decisione in fase di runtime.
Recuperare l'ID progetto
L'ID progetto può essere trovato utilizzando il
AppIdentityService::getApplicationId().
Recuperare il nome host dell'applicazione
Per impostazione predefinita, le app App Engine vengono pubblicate da URL nel formato
https://PROJECT_ID.REGION_ID.r.appspot.com, dove l'ID progetto fa parte del nome host.
Se un'app viene pubblicata da un dominio personalizzato, potrebbe essere necessario recuperare l'intero componente del nome host. Puoi farlo utilizzando l'
AppIdentityService::getDefaultVersionHostname().
Affermare l'identità ad altre app App Engine
Se vuoi determinare l'identità dell'app App Engine che effettua una richiesta alla tua app App Engine, puoi utilizzare l'intestazione della richiesta X-Appengine-Inbound-Appid. Questa intestazione viene aggiunta alla richiesta dal servizio URLFetch e non è modificabile dall'utente, quindi indica in modo sicuro l'ID progetto dell'applicazione richiedente, se presente.
Requisiti:
Solo le chiamate effettuate al dominio
appspot.comdella tua app conterranno l'intestazioneX-Appengine-Inbound-Appid. Le chiamate ai domini personalizzati non contengono l'intestazione.Le richieste devono essere impostate in modo da non seguire i reindirizzamenti.
Nel gestore dell'applicazione, puoi controllare l'ID in entrata leggendo l'intestazione X-Appengine-Inbound-Appid e confrontandola con un elenco di ID autorizzati a effettuare richieste.
Affermare l'identità alle API di Google
Le API di Google utilizzano il protocollo OAuth 2.0 per l'autenticazione e
l'autorizzazione. L'API App Identity può creare token OAuth che possono essere utilizzati per affermare che l'origine di una richiesta è l'applicazione stessa. Il
getAccessToken() metodo
restituisce un
token di accesso per un ambito o un elenco di ambiti. Questo token può essere impostato nelle intestazioni HTTP di una chiamata per identificare l'applicazione chiamante.
L'esempio seguente mostra come utilizzare l'API App Identity per recuperare i contatti di Google Calendar utilizzando OAuth.
// Retrieves Google Calendar contacts using OAuth use Google\AppEngine\Api\AppIdentity\AppIdentityService; function setAuthHeader() { $access_token = AppIdentityService::getAccessToken('https://www.google.com/m8/feeds'); return [sprintf('Authorization: OAuth %s', $access_token['access_token'])]; } $get_contacts_url = 'https://www.google.com/m8/feeds/contacts/default/full'; $headers = setAuthHeader(); $opts = [ 'http' => [ 'header' => implode("\r\n", $headers), ], ]; $context = stream_context_create($opts); $response = file_get_contents($get_contacts_url, false, $context); $xml = simplexml_load_string($response); $email = $xml->author->email; $service_account = AppIdentityService::getServiceAccountName(); if (strcmp($email, $service_account) != 0) { die(sprintf('%s does not match the service account name %s.', $email, $service_account)); }
Tieni presente che l'identità dell'applicazione è rappresentata dal nome dell'account di servizio,
che in genere è applicationid@appspot.gserviceaccount.com. Puoi ottenere il
valore esatto utilizzando il
getServiceAccountName() metodo
. Per i servizi che offrono ACL, puoi concedere l'accesso all'applicazione concedendo l'accesso a questo account.
Affermare l'identità ai servizi di terze parti
Il token generato dal
getAccessToken() metodo
funziona solo con i servizi Google.
Tuttavia, puoi utilizzare la tecnologia di firma sottostante per affermare l'identità della tua applicazione ad altri servizi. Il metodo
signForApp()
firmerà i byte utilizzando una
chiave privata univoca per la tua applicazione, mentre il metodo
getPublicCertificates()
restituirà i certificati che possono essere utilizzati per convalidare la firma.
Recuperare il nome del bucket Cloud Storage predefinito
Ogni applicazione può avere un bucket Cloud Storage predefinito, che include 5 GB di spazio di archiviazione senza costi e una quota senza costi per le operazioni di I/O.
Per recuperare il nome del bucket predefinito, puoi utilizzare l'API App Identity. Chiama
CloudStorageTools::getDefaultGoogleStorageBucketName. In alternativa, utilizza il valore #default# come nome del bucket, dove #default#
verrà sostituito automaticamente in fase di runtime dal nome del bucket predefinito dell'applicazione
.