Google Displaynetzwerk und In Video 360 werden Lesedateien automatisch gespeichert. in Google Cloud Storage. Auf diese Dateien kann nur von Konten mit Zugriffsberechtigung.
Projekt erstellen
So erstellen und konfigurieren Sie ein Projekt:
- Rufen Sie die Seite für aktivierte APIs in der Google API Console auf.
Wenn Sie noch nicht in Google angemeldet sind, werden Sie dazu aufgefordert.
- Wählen Sie aus der Drop-down-Liste ein vorhandenes Projekt aus oder erstellen Sie ein neues.
- Wenn Sie mehrere Projekte haben, wählen Sie das Projekt aus für den Sie Google Cloud Storage aktivieren möchten, und wählen Sie Weiter.
- Wenn Sie noch kein Projekt haben, wählen Sie Neues Projekt erstellen aus, geben Sie einen Projektnamen ein und wählen Sie dann Erstellen aus.
Hinweis: Einige Ressourcenkennungen (wie Projekt-IDs) über die Lebensdauer des Projekts hinaus beibehalten werden. Vermeiden Sie es daher, vertrauliche Informationen in Ressourcen zu speichern Kennzeichnungen.
- Achten Sie darauf, dass in der Liste Aktivierte APIs die Google Cloud Storage-Komponente aufgeführt ist.
Ist dies nicht der Fall, klicken Sie auf den Tab Google APIs, suchen Sie nach der Google Cloud
Storage-Komponente auf und klicken Sie auf API aktivieren.
Bei den meisten Projekten ist die Google Cloud Storage-Komponente bereits aktiviert. Wenn Sie um mithilfe der JSON API auf Google Cloud Storage zuzugreifen, und sollten Sie auch überprüfen, ob die Google Cloud Storage JSON API aktiviert ist.
- Aktivieren Sie die Abrechnung für das Projekt.
Bevor Sie Google Cloud Storage verwenden können, müssen Sie die Abrechnung für Ihr wenn Sie dies noch nicht getan haben. Das Aktivieren der Abrechnung Ihnen in Rechnung gestellt werden. Weitere Informationen finden Sie unter Preise.
- Klicken Sie im Cloud Storage-Projekt links oben auf das Galeriemenü und wählen Sie Abrechnung aus.
- Wenn Sie noch kein Rechnungskonto haben, folgen Sie der Anleitung, um Erstellen Sie ein neues Rechnungskonto.
- Falls Sie bereits ein Rechnungskonto haben wählen Sie es und dann Konto festlegen aus.
Bleiben Sie in der Google API Console im selben Projekt und fahren Sie mit dem nächsten Abschnitt fort.
Zugriff auf Cloud Storage einrichten
Klicken Sie in der Google API Console im erforderlichen Projekt auf das Galeriemenü im wählen Sie APIs und Dienste und klicken Sie dann auf Anmeldedaten. Am auf der Seite „Anmeldedaten“ nach Dienstkontoschlüssel.
Suchen Sie die E-Mail-Adresse des Dienstkontoschlüssels:
- Klicken Sie rechts neben dem Abschnitt „Dienstkontoschlüssel“ auf den Link Dienstkonten verwalten.
- Die E-Mail-Adresse wird auf der daraufhin angezeigten Seite Berechtigungen angezeigt.
Wenn keine Dienstkontoschlüssel vorhanden sind, erstellen Sie ein neues Dienstkonto:
- Wählen Sie im Drop-down-Menü Anmeldedaten erstellen die Option Dienstkontoschlüssel aus.
- Wählen Sie im Drop-down-Menü Dienstkonto die Option Neues Dienstkonto aus.
- Geben Sie im Feld Name einen Namen für das Dienstkonto ein. Die Dienstkonto-ID lautet automatisch aus dem Namen und dem Projektnamen generiert werden.
- Notieren Sie die Dienstkonto-ID
gserviceaccount.com
E-Mail-Adresse. Er wird auf der Seite „Anmeldedaten“ nicht angezeigt, nachdem Sie Erstellen ausgewählt haben. - Wählen Sie im Abschnitt Schlüsseltyp die Option JSON aus.
- Klicken Sie auf Erstellen. Die JSON-Datei mit dem öffentlichen/privaten Schlüsselpaar des Kontos wird hier gespeichert: im Ordner „Downloads“. Dieser Schlüssel wird verwendet, um Ihre Anwendung gegenüber der API zu authentifizieren und alle an die API gesendeten Anfragen signieren. Speichern Sie die generierte JSON-Datei an einem sicheren Ort. wo Ihre Anwendung darauf zugreifen kann.
Display- und Video 360-Supportteam muss Aktivierung von Entity Read-Dateien beantragen und/oder die Google Bid Manager API.
Nachdem das Supportteam den Zugriff bestätigt hat, erstellen Sie eine eigene Google-Gruppe. (oder Gruppen) und aktualisieren Sie die folgenden Felder in Display & Details zum Video 360-Partner. Beachten Sie, dass nur Nutzer mit Zugriff auf Partnerebene können folgende Änderungen vornehmen:
- Google-Gruppe protokollieren
Die schreibgeschützte Gruppe hat nur Berechtigungen zum Lesen von Dateien und zum Auflisten des Inhalts der Storage-Buckets. - Google-Gruppe „Logverwaltung“
Die Verwaltungsgruppe verfügt über alle Berechtigungen der schreibgeschützten Gruppe, kann aber auch die ACLs von Dateien in den Buckets abzurufen. Beachten Sie, dass nicht einmal die Verwaltungsgruppe die Berechtigung hat. Bucket-ACLs ändern und sind nicht berechtigt, Dateien zu erstellen, zu ändern oder zu löschen.
Nachdem die Google-Gruppe hinzugefügt wurde, können Sie Ihrer Google-Gruppe Nutzer hinzufügen oder sie daraus entfernen. ohne weitere Beteiligung der Display- und Video 360-Supportteam nur diese Nutzer Mitglieder Ihrer Gruppe haben dann Zugriff auf Ihre Daten.
- Google-Gruppe protokollieren
Auf Ihre Daten zugreifen
Mit gsutil auf Daten zugreifen
Das gsutil-Tool ist eine Befehlszeilenanwendung, mit der Sie auf Ihre Google Cloud Storage-Daten – ganz einfach und ohne Programmierkenntnisse Nutzererfahrung. Sie können gsutil zum Beispiel als Teil eines Skripts oder einer Batch-Datei verwenden, benutzerdefinierte Anwendungen erstellen.
Informationen zum Einstieg in gsutil finden Sie in der gsutil-Dokumentation. Sie müssen sich weiterhin wie zuvor mit OAuth 2 authentifizieren, aber gsutil selbst fordert Sie dazu auf, wenn Sie sie zum ersten Mal verwenden, und speichern Sie sie zur späteren Verwendung.
Programmatisch auf Daten zugreifen
Google Cloud Storage bietet APIs für viele Programmiersprachen, die
damit Sie programmatisch auf Ihre Daten zugreifen können. Im Beispiel unten sehen Sie, wie Sie eine einfache
Download einer der Lesedateien
von Google Cloud Storage. Denken Sie daran, dass nur die Öffentlichkeit
Lesedateien werden im Verzeichnis
gdbm-public
Bucket; Ihre private
Lesedateien für Entitäten werden in spezifischen Buckets für Partner und Werbetreibende gespeichert.
Java
Im folgenden Beispiel wird die Methode Google APIs-Client-Bibliothek für Java, die den Zugriff auf die Daten in Google Cloud Storage. Zusätzlich zur allgemeinen Clientbibliothek für Google APIs müssen Sie auch die separate Bibliothek für die Cloud Storage API.
Zuerst müssen Sie die Anmeldedaten einrichten, die für die Kommunikation mit der API verwendet werden sollen, um
um Zugriff auf Ihre Daten zu erhalten. Dazu wird ein Credential
erstellt
Objekt, das die developer.gserviceaccount.com
-E-Mail-Adresse des Dienstkontos verwendet
als ServiceAccountId
und lädt auch die heruntergeladene Datei mit dem privaten Schlüssel.
über die Google API Console beim Erstellen des Dienstkontos. So stellen Sie sicher,
Zukünftige API-Anfragen werden mit dem privaten Schlüssel des Dienstkontos signiert:
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();
Nachdem Sie das Credential
-Objekt erstellt haben, können Sie damit ein
neues Storage
-Objekt, das Sie für alle zukünftigen Anfragen an die
Google Cloud Storage API:
Storage storage = new Storage(HTTP_TRANSPORT, JSON_FACTORY, credential);
Da Sie nun ein neues Storage
-Objekt haben, können Sie Anfragen an
die API verwenden. Hier stellen Sie eine Anfrage zum Abrufen eines bestimmten Elements bucketObjectName
.
aus dem Bucket bucket
. Die Bibliothek übernimmt den HTTP-Download der Datei aus
Google Cloud Storage herunterladen. Anschließend drucken Sie den Inhalt im
Console:
Get bucketObject = storage.objects().get(bucketName, bucketObjectName); ByteArrayOutputStream output = new ByteArrayOutputStream(); bucketObject.getMediaHttpDownloader().setDirectDownloadEnabled(true); bucketObject.executeAndDownloadTo(output); System.out.println(output.toString());
Ihre Werte für bucket
und bucketObjectName
variieren je nach
auf welchen Teil der API Sie zugreifen; finden Sie im entsprechenden Abschnitt
Konventionen treffen.
C#
Im folgenden Beispiel wird die Methode Google APIs-Clientbibliothek für .NET für einen einfachen und einfachen Zugriff auf die Daten in Google Cloud Storage
Sie müssen zuerst die Anmeldedaten einrichten, die bei der Kommunikation mit der API verwendet werden sollen, um eine Autorisierung für den Zugriff auf Ihre Daten zu erhalten. Dazu wird ein AssertionFlowClient
-Objekt erstellt, das die developer.gserviceaccount.com
-E-Mail-Adresse des Dienstkontos als ServiceAccountId
verwendet und außerdem die Datei mit dem privaten Schlüssel lädt, die beim Erstellen des Dienstkontos aus der Google API Console heruntergeladen wurde.
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() };
Nachdem Sie das AssertionFlowClient
-Objekt erstellt haben, können Sie damit ein neues OAuth2Authenticator
-Objekt instanziieren, mit dem Sie eine neue Storage
-Instanz für alle zukünftigen Anfragen an die Google Cloud Storage API instanziieren können:
var auth = new OAuth2Authenticator<AssertionFlowClient>(provider, AssertionFlowClient.GetState); StorageService service = new StorageService(auth);
Da Sie jetzt ein neues Storage
-Objekt haben, können Sie Anfragen senden
an die API senden. Hier stellen Sie eine Anfrage zum Abrufen eines bestimmten Elements,
bucketObjectName
aus dem Bucket bucket
. Wir verwenden Standard-
.NET-Clientbibliotheksklassen zum Verarbeiten des HTTP-Downloads von
Google Cloud Storage, aber Sie müssen manuell den Fall übernehmen,
eine Weiterleitung, die dafür sorgt, dass immer die richtige Authorization
in der Anfrage vorhanden:
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(); }
Der Inhalt der Antwort kann dann aus dem HttpWebResponse
-Objekt gelesen werden.
wie gewohnt über die GetResponseStream
. Ihre Werte für bucket
und
bucketObjectName
hängt davon ab, auf welchen Teil der API Sie zugreifen. finden Sie im entsprechenden Abschnitt zu Namenskonventionen.
Anhang: Vollständige Beispiele
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; } } }