Display di Google e Video 360 archivia automaticamente i file per la lettura delle entità in Google Cloud Storage. Questi file sono accessibili solo a cui è stato concesso l'accesso.
Creare un progetto
Crea e configura un progetto nel seguente modo:
- Vai alla pagina API abilitate nella console API di Google.
Se non hai ancora eseguito l'accesso a Google, ti verrà chiesto di farlo.
- Dal menu a discesa del progetto, seleziona un progetto esistente o creane uno nuovo.
- Se hai più progetti, assicurati di selezionarlo per cui vuoi attivare Google Cloud Storage, quindi seleziona Continua.
- In alternativa, se non hai un progetto, seleziona Crea un nuovo progetto, inserisci il nome del progetto e seleziona Crea.
Nota: tieni presente che alcuni identificatori di risorsa (ad esempio, gli ID progetto) potrebbero essere conservati per un periodo di durata superiore al progetto. Per questo motivo, evita di archiviare informazioni sensibili o identificatori univoci.
- Assicurati che nell'elenco API abilitate sia presente il componente Google Cloud Storage.
Se non è elencato, fai clic sulla scheda API di Google, cerca e seleziona il cluster
Componente Storage e fai clic su Abilita API.
Tieni presente che per la maggior parte dei progetti, il componente Google Cloud Storage è già abilitato. Se prevedi per accedere a Google Cloud Storage mediante l'API JSON, devi anche verificare che l'API JSON di Google Cloud Storage sia abilitata.
- Abilitare la fatturazione per il progetto.
Prima di poter utilizzare Google Cloud Storage, devi abilitare la fatturazione per progetto, se non l'hai già fatto. L'abilitazione della fatturazione non comporta necessariamente significa che ti verrà addebitato l'importo. Per ulteriori informazioni, vedi Prezzi.
- Sempre all'interno del progetto Cloud Storage, fai clic sul menu Galleria nell'angolo in alto a sinistra, quindi seleziona Fatturazione.
- Se non hai ancora un account di fatturazione, segui le istruzioni per crea un nuovo account di fatturazione.
- Se hai un account di fatturazione esistente, selezionalo e poi seleziona Imposta account.
Nella console API di Google, rimani all'interno dello stesso progetto e vai alla sezione successiva.
Configura l'accesso a Cloud Storage
Sempre nella console API di Google all'interno del progetto richiesto, fai clic sul menu Galleria nel nell'angolo in alto a sinistra, seleziona API e Servizi, quindi fai clic su Credenziali. Il giorno Credenziali, cerca Chiavi account di servizio.
Trova l'indirizzo email della chiave dell'account di servizio:
- Seleziona il link Gestisci account di servizio (a destra della sezione Chiavi account di servizio).
- L'indirizzo email è visibile nella pagina Autorizzazioni visualizzata.
Se non esistono chiavi dell'account di servizio, creane uno nuovo:
- Seleziona il menu a discesa Crea credenziali, quindi scegli Chiave account di servizio.
- Nel menu a discesa Account di servizio, scegli Nuovo account di servizio.
- Inserisci un nome per l'account di servizio. L'ID account di servizio viene automaticamente generate dal nome e dal nome del progetto.
- Prendi nota dell'indirizzo email con ID account di servizio
gserviceaccount.com
. Non verrà visualizzato nella pagina Credenziali dopo aver selezionato Crea. - Nella sezione Tipo di chiave, scegli JSON.
- Fai clic su Crea. Il file JSON con la coppia di chiavi pubblica/privata dell'account viene salvato nella cartella Download. Questa chiave viene utilizzata per autenticare la tua applicazione nell'API e firmare tutte le richieste che invia all'API. Archivia il file JSON generato in un luogo sicuro, da dove potrà accedervi la tua applicazione.
Contatta il display e Il team di assistenza di Video 360 deve richiedere l'abilitazione dei file per la lettura delle entità e/o l'API Google Bid Manager.
Dopo che il team di assistenza avrà confermato l'accesso, crea un gruppo Google dedicato. (o gruppi) e aggiorna i seguenti campi in Display & Dettagli del partner Video 360 (tieni presente che solo gli utenti con accesso a livello di partner potranno apportare questi aggiornamenti:
- Gruppo Google Lettura log
Il gruppo di sola lettura dispone solo delle autorizzazioni per leggere i file ed elencare i contenuti dei bucket di archiviazione. - Gruppo Google per la gestione dei log
Il gruppo di gestione possiede tutte le autorizzazioni del gruppo di sola lettura, ma può anche modificarle gli ACL dei file all'interno dei bucket. Anche il gruppo di gestione non dispone dell'autorizzazione per cambiare gli ACL dei bucket né per creare, modificare o eliminare file.
Dopo aver aggiunto il gruppo Google, puoi aggiungere e rimuovere utenti dal tuo gruppo Google in base alle tue esigenze. senza l'intervento del Display & il team di assistenza di Video 360; solo quegli utenti che fanno parte del tuo gruppo avranno accesso ai tuoi dati.
- Gruppo Google Lettura log
Accedere ai dati
Accedere ai dati utilizzando gsutil
Lo strumento gsutil è un'applicazione a riga di comando che ti consente di accedere I dati di Google Cloud Storage facilmente e senza alcuna programmazione un'esperienza senza intervento manuale. Ad esempio, potresti utilizzare gsutil come parte di uno script o un file batch anziché creando applicazioni personalizzate.
Per iniziare a utilizzare gsutil, leggi la documentazione relativa a gsutil. Dovrai comunque eseguire l'autenticazione utilizzando OAuth 2 come in precedenza, ma lo stesso gsutil richiederà di le credenziali al primo utilizzo e quindi le archivi per usarle in un secondo momento.
Accedi ai dati in modo programmatico
Google Cloud Storage dispone di API per molti linguaggi di programmazione che consentono
di accedere ai dati in modo programmatico. L'esempio seguente mostra come eseguire una semplice
download di uno dei file per la lettura delle entità
da Google Cloud Storage. Ricorda che solo il pubblico
I file per la lettura delle entità vengono archiviati
gdbm-public
bucket; il tuo privato
I file per la lettura delle entità verranno archiviati in bucket specifici per i partner e gli inserzionisti.
Java
L'esempio seguente utilizza la classe Google Libreria client API per Java, che consente di accedere ai dati contenuti in Google Cloud Storage. Oltre alla libreria client delle API di Google generali, dovrai anche scaricare il file raccolta per l'API Cloud Storage.
Per prima cosa devi configurare le credenziali da utilizzare durante la comunicazione con l'API per
ottenere l'autorizzazione ad accedere ai tuoi dati. Per farlo, devi creare un Credential
che utilizza l'indirizzo email developer.gserviceaccount.com
dell'account di servizio
come ServiceAccountId
e carica anche il file della chiave privata che è stato scaricato
dalla console API di Google durante la creazione dell'account di servizio. Questo assicura che tutti
le richieste future all'API vengono firmate con la chiave privata dell'account di servizio:
NetHttpTransport HTTP_TRANSPORT = new NetHttpTransport(); JacksonFactory JSON_FACTORY = new JacksonFactory(); ... Credential credential = new GoogleCredential.Builder().setTransport(HTTP_TRANSPORT) .setJsonFactory(JSON_FACTORY) .setServiceAccountId("...@developer.gserviceaccount.com") .setServiceAccountScopes(StorageScopes.DEVSTORAGE_READ_ONLY) .setServiceAccountPrivateKeyFromP12File(new File("...-privatekey.p12")) .build();
Dopo aver creato l'oggetto Credential
, puoi utilizzarlo per creare un'istanza di un
nuovo oggetto Storage
che puoi utilizzare per tutte le richieste future al
API Google Cloud Storage:
Storage storage = new Storage(HTTP_TRANSPORT, JSON_FACTORY, credential);
Ora che hai un nuovo oggetto Storage
, puoi iniziare a inviare richieste a
l'API. Qui stai effettuando una richiesta di recupero di un elemento specifico bucketObjectName
dal bucket bucket
. La libreria gestisce il download HTTP del file da
Google Cloud Storage per poi semplicemente stampare i contenuti
Console:
Get bucketObject = storage.objects().get(bucketName, bucketObjectName); ByteArrayOutputStream output = new ByteArrayOutputStream(); bucketObject.getMediaHttpDownloader().setDirectDownloadEnabled(true); bucketObject.executeAndDownloadTo(output); System.out.println(output.toString());
I valori di bucket
e bucketObjectName
varieranno a seconda di
a quale parte dell'API si accede; consulta la sezione sulla denominazione corrispondente
le convenzioni dell'IA.
C#
L'esempio seguente utilizza il metodo Libreria client delle API di Google per .NET, che semplifica e rende facile l'accesso ai dati contenuti in Google Cloud Storage.
Per prima cosa devi configurare le credenziali da utilizzare durante la comunicazione con l'API per ottenere l'autorizzazione ad accedere ai tuoi dati. Per farlo, crea un oggetto AssertionFlowClient
che utilizzi l'indirizzo email developer.gserviceaccount.com
dell'account di servizio come ServiceAccountId
e carica anche il file della chiave privata scaricato dalla console API di Google durante la creazione dell'account di servizio.
string keyPath = @"...-privatekey.p12"; X509Certificate2 certificate = new X509Certificate2(keyPath, "notasecret", X509KeyStorageFlags.Exportable); var provider = new AssertionFlowClient(GoogleAuthenticationServer.Description, certificate) { ServiceAccountId = "...@developer.gserviceaccount.com", Scope = StorageService.Scopes.DevstorageRead_only.GetStringValue() };
Dopo aver creato l'oggetto AssertionFlowClient
, puoi utilizzarlo per creare un'istanza di un nuovo oggetto OAuth2Authenticator
da utilizzare per creare una nuova istanza Storage
per tutte le richieste future all'API Google Cloud Storage:
var auth = new OAuth2Authenticator<AssertionFlowClient>(provider, AssertionFlowClient.GetState); StorageService service = new StorageService(auth);
Ora che hai un nuovo oggetto Storage
, puoi iniziare a effettuare richieste
all'API. Qui richiedi di recuperare un elemento specifico,
bucketObjectName
, dal bucket bucket
. Usiamo standard
classi della libreria client .NET per gestire il download HTTP da
Google Cloud Storage, ma devi gestire manualmente il caso
è presente un reindirizzamento per garantire che ci sia sempre il valore Authorization
corretto
intestazione presente nella richiesta:
var results = service.Objects.Get(bucketName, bucketObjectName).Fetch(); HttpWebRequest request = createRequest(results.Media.Link, auth); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); // Handle redirects manually to ensure that the Authorization header is present if // your request is redirected. if (response.StatusCode == HttpStatusCode.TemporaryRedirect) { request = createRequest(response.Headers["Location"], auth); response = (HttpWebResponse)request.GetResponse(); }
I contenuti della risposta possono essere letti dall'oggetto HttpWebResponse
tramite GetResponseStream
come al solito. I tuoi valori per bucket
e
bucketObjectName
varierà a seconda della parte dell'API a cui accedi. consulta la sezione appropriata sulle convenzioni di denominazione.
Appendice: Esempi completi
Java
/* * Copyright (c) 2013 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except * in compliance with the License. You may obtain a copy of the License at * http://www.apache.org/licenses/LICENSE-2.0. * * Unless required by applicable law or agreed to in writing, software distributed under the License * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express * or implied. See the License for the specific language governing permissions and limitations under * the License. */ package com.google.bidmanager.api.samples; import java.io.BufferedReader; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.InputStreamReader; import com.google.api.client.auth.oauth2.Credential; import com.google.api.client.googleapis.auth.oauth2.GoogleCredential; import com.google.api.client.http.javanet.NetHttpTransport; import com.google.api.client.json.jackson2.JacksonFactory; import com.google.api.services.storage.Storage; import com.google.api.services.storage.Storage.Objects.Get; import com.google.api.services.storage.StorageScopes; /** * A simple class that demonstrates how to download a specific object from a bucket using a * service account */ public class ServiceDownload { /** * This is the HTTP Transport object used for automatically refreshing access tokens. */ static final NetHttpTransport HTTP_TRANSPORT = new NetHttpTransport(); /** * This is the JSON factory used for parsing refresh token responses.Your first requirement */ static final JacksonFactory JSON_FACTORY = new JacksonFactory(); /** * The main method will attempt to download a specific named object from the gdbm-public bucket * using a service account. * * @param args Not used. */ public static void main(String[] args) { try { // Prompt the user for the details of the object to download. System.out.print("Name of object to download, e.g. entity/20130430.0.Browser.json:"); BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); String bucketObjectName = in.readLine(); in.close(); String bucketName = "gdbm-public"; Credential credential = new GoogleCredential.Builder().setTransport(HTTP_TRANSPORT) .setJsonFactory(JSON_FACTORY) .setServiceAccountId("...@developer.gserviceaccount.com") .setServiceAccountScopes(StorageScopes.DEVSTORAGE_READ_ONLY) .setServiceAccountPrivateKeyFromP12File( new File("...-privatekey.p12")) .build(); Storage storage = new Storage(HTTP_TRANSPORT, JSON_FACTORY, credential); Get bucketObject = storage.objects().get(bucketName, bucketObjectName); ByteArrayOutputStream output = new ByteArrayOutputStream(); bucketObject.getMediaHttpDownloader().setDirectDownloadEnabled(true); bucketObject.executeAndDownloadTo(output); System.out.println(output.toString()); } catch (Exception e) { System.err.println("Unexpected exception caught: " + e.getMessage()); e.printStackTrace(); } } }
C#
/* * Copyright (c) 2013 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except * in compliance with the License. You may obtain a copy of the License at * http://www.apache.org/licenses/LICENSE-2.0. * * Unless required by applicable law or agreed to in writing, software distributed under the License * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express * or implied. See the License for the specific language governing permissions and limitations under * the License. */ using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Net; using System.Security.Cryptography.X509Certificates; using DotNetOpenAuth.OAuth2; using Google.Apis; using Google.Apis.Requests; using Google.Apis.Authentication.OAuth2; using Google.Apis.Authentication.OAuth2.DotNetOpenAuth; using Google.Apis.Storage.v1beta1; using Google.Apis.Storage.v1beta1.Data; using Google.Apis.Util; namespace ApiSamples { /// <summary> /// A simple class that demonstrates how to download a specific object from a bucket using a /// service account /// </summary> class ServiceDownload { /// <summary> /// The main method will attempt to download a specific named object from the /// gdbm-public bucket using a service account. /// </summary> /// <param name="args">Not used.</param> public static void Main(string[] args) { // Prompt the user for the details of the object to download Console.WriteLine("Name of object to download, e.g. entity/20130430.0.Browser.json:"); string bucketObjectName = Console.ReadLine(); string bucketName = "gdbm-public"; try { string keyPath = @"...-privatekey.p12"; X509Certificate2 certificate = new X509Certificate2(keyPath, "notasecret", X509KeyStorageFlags.Exportable); var provider = new AssertionFlowClient(GoogleAuthenticationServer.Description, certificate) { ServiceAccountId = "...@developer.gserviceaccount.com", Scope = StorageService.Scopes.DevstorageRead_only.GetStringValue() }; var auth = new OAuth2Authenticator<AssertionFlowClient>(provider, AssertionFlowClient.GetState); StorageService service = new StorageService(auth); var results = service.Objects.Get(bucketName, bucketObjectName).Fetch(); HttpWebRequest request = createRequest(results.Media.Link, auth); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); // Handle redirects manully to ensure that the Authorization header is present if // our request is redirected. if (response.StatusCode == HttpStatusCode.TemporaryRedirect) { request = createRequest(response.Headers["Location"], auth); response = (HttpWebResponse)request.GetResponse(); } Stream stream = response.GetResponseStream(); StreamReader reader = new StreamReader(stream); String data = reader.ReadToEnd(); Console.Write(data); } catch (Exception e) { Console.WriteLine("Unexpected exception caught: " + e.Message); Console.Write(e.StackTrace); } Console.ReadKey(); } /// <summary> /// Generate a HttpWebRequest for the given URL with the appropriate OAuth2 authorization /// header applied. The HttpWebRequest object returned has its AllowAutoRedirect option /// disabled to allow us to manually handle redirects. /// </summary> /// <param name="url">URL that is to be requested with this object</param> /// <param name="auth">The OAuth2Authenticator instance that contains the appropriate keys.</param> /// <returns>HttpWebRequest object ready to be used to make requests to the API</returns> private static HttpWebRequest createRequest(string url, OAuth2Authenticator<AssertionFlowClient> auth) { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Headers.Add("Authorization", "Bearer " + auth.State.AccessToken); request.AllowAutoRedirect = false; return request; } } }