Konfiguracja

Klienta można skonfigurować na kilka sposobów.

Konfiguracja uwierzytelniania

Istnieje kilka sposobów zarządzania danymi logowania OAuth potrzebnymi do uzyskania dostępu do interfejsu Google Ads API. Wybrana metoda wpłynie na to, których pól konfiguracji będziesz używać. Więcej informacji znajdziesz w przewodniku po uwierzytelnianiu.

Konfiguracja za pomocą pliku YAML

Podczas inicjowania klienta możesz określić plik YAML, który zawiera informacje potrzebne do wysyłania żądań do interfejsu Google Ads API. Dostęp do tego pliku jest uzyskiwany, gdy klient jest inicjowany za pomocą metody load_from_storage. Najłatwiejszym sposobem na wygenerowanie tego pliku jest skopiowanie google-ads.yaml przykładu z repozytorium GitHub i zmodyfikowanie go tak, aby zawierał Twoje dane logowania, w tym token odświeżania, identyfikator klienta i tajny klucz klienta.

Jeśli nie podasz ścieżki, biblioteka będzie szukać pliku w katalogu $HOME:

from google.ads.googleads.client import GoogleAdsClient
client = GoogleAdsClient.load_from_storage()

Aby określić lokalizację pliku google-ads.yaml, możesz przekazać ścieżkę jako ciąg znaków do metody podczas jej wywoływania:

from google.ads.googleads.client import GoogleAdsClient
client = GoogleAdsClient.load_from_storage("path/to/google-ads.yaml")

Ścieżkę możesz też określić, definiując konkretną zmienną środowiskową:

import os

os.environ["GOOGLE_ADS_CONFIGURATION_FILE_PATH"] = "path/to/google-ads.yaml"
from google.ads.googleads.client import GoogleAdsClient
client = GoogleAdsClient.load_from_storage()

Jeśli podasz obie wartości – ścieżkę przekazaną do metody i zmienną środowiskową – biblioteka nada priorytet ścieżce przekazanej do metody.

Konfiguracja za pomocą zmiennych środowiskowych

Całą konfigurację klienta możesz zapisać jako zmienne środowiskowe, które będą odczytywane podczas korzystania z metody load_from_env klienta. Zmienne środowiskowe powinny mieć takie same nazwy jak te zdefiniowane w pliku google-ads.yaml, ale powinny być pisane wielkimi literami i mieć prefiks GOOGLE_ADS_. Na przykład client_id należy zapisać jako GOOGLE_ADS_CLIENT_ID.

Zmienne środowiskowe są zwykle definiowane w pliku konfiguracji bash, np. w pliku .bashrc lub .bash_profile znajdującym się w katalogu $HOME. Można je też zdefiniować za pomocą wiersza poleceń.

Oto podstawowe kroki definiowania zmiennej środowiskowej za pomocą pliku .bashrc w terminalu:

# Append the line "export GOOGLE_ADS_CLIENT_ID=1234567890" to
# the bottom of your .bashrc file.
$ echo "export GOOGLE_ADS_CLIENT_ID=1234567890" >> ~/.bashrc
# Update your bash environment to use the most recently updated
# version of your .bashrc file.
$ src ~/.bashrc

Zmienne środowiskowe można też ustawić w instancji terminala bezpośrednio z wiersza poleceń:

$ export GOOGLE_ADS_CLIENT_ID=1234567890
$ echo $GOOGLE_ADS_CLIENT_ID
1234567890

Metoda load_from_env wczytuje dane konfiguracyjne z atrybutu environ wbudowanego modułu os w Pythonie. Przykład: os.environ["GOOGLE_ADS_CLIENT_ID"]

Oto przykład inicjowania instancji klienta z konfiguracją ze zmiennych środowiskowych:

from google.ads.googleads.client import GoogleAdsClient
client = GoogleAdsClient.load_from_env()

Aby skonfigurować logging za pomocą zmiennych środowiskowych, wartość konfiguracji musi być obiektem JSON, który odpowiada strukturze kluczy YAML w przykładowym google-ads.yaml pliku konfiguracji.

Oto przykład, jak można to ustawić za pomocą pliku .bashrc:

export GOOGLE_ADS_LOGGING='{
  "version": 1,
  "disable_existing_loggers": false,
  "formatters": {
    "default_fmt": {
      "format": "[%(asctime)s - %(levelname)s] %(message).5000s",
      "datefmt": "%Y-%m-%d %H:%M:%S"
    }
  },
  "handlers": {
    "default_handler": {
      "class": "logging.StreamHandler",
      "formatter": "default_fmt"
    }
  },
  "loggers": {
    "": {
      "handlers": ["default_handler"],
      "level": "INFO"
    }
  }
}'

Konfiguracja za pomocą ciągu znaków YAML

Jeśli plik YAML został wczytany do pamięci, możesz go przekazać bezpośrednio do klienta podczas inicjowania. Aby to zrobić, użyj metody load_from_string.

from google.ads.googleads.client import GoogleAdsClient

with open("/path/to/yaml", "rb") as handle:
    yaml = handle.read()

client = GoogleAdsClient.load_from_string(yaml)

Konfiguracja za pomocą dict

Możesz przekazać dict bezpośrednio do metody load_from_dict. Przykład:

from google.ads.googleads.client import GoogleAdsClient

credentials = {
    "refresh_token": "1//0abcdefghijklABCDEF",
    "client_id": "123456-abcdef.apps.googleusercontent.com",
    "client_secret": "aBcDeFgHiJkL"}

client = GoogleAdsClient.load_from_dict(credentials)

Pola konfiguracji

Konfiguracja biblioteki klienta obsługuje te pola.

Uwierzytelnianie

Używaj tylko jednej z tych grup pól, w zależności od tego, której metody uwierzytelniania używasz:

  • Jeden użytkownik z domyślnymi danymi logowania aplikacji (dokumentacja)
    • use_application_default_credentials: czy biblioteka ma używać domyślnych danych logowania aplikacji (ADC) do uwierzytelniania.
  • Jeden użytkownik z tokenami OAuth (dokumentacja)
    • client_id: identyfikator klienta OAuth.
    • client_secret: tajny klucz klienta OAuth.
    • refresh_token: token odświeżania OAuth.
  • Konto usługi (dokumentacja)
    • json_key_file_path: ścieżka do lokalnego pliku klucza prywatnego. Służy do uwierzytelniania za pomocą konta usługi.

Działanie biblioteki

Te pola określają działanie biblioteki:

Konfiguracja na poziomie żądania

Zmienne środowiskowe

Aby skonfigurować bibliotekę za pomocą zmiennych środowiskowych, użyj tych zmiennych:

  • GOOGLE_ADS_CLIENT_ID
  • GOOGLE_ADS_CLIENT_SECRET
  • GOOGLE_ADS_CONFIGURATION_FILE_PATH
  • GOOGLE_ADS_HTTP_PROXY
  • GOOGLE_ADS_JSON_KEY_FILE_PATH
  • GOOGLE_ADS_LINKED_CUSTOMER_ID
  • GOOGLE_ADS_LOGIN_CUSTOMER_ID
  • GOOGLE_ADS_LOGGING
  • GOOGLE_ADS_REFRESH_TOKEN
  • GOOGLE_ADS_USE_PROTO_PLUS
  • GOOGLE_ADS_USE_APPLICATION_DEFAULT_CREDENTIALS

Konfiguracja logowania

Pola logowania, które znajdują się pod polem konfiguracji logging, są wyprowadzane bezpośrednio z wbudowanego modułu logging.config, ponieważ biblioteka przekazuje wszystkie pola w przestrzeni nazw logging bezpośrednio do metody logging.config.dictConfig. Szczegółowe informacje znajdziesz w przewodniku po logowaniu.

  • version: liczba całkowita reprezentująca wersję schematu.
  • disable_existing_loggers: czy wyłączyć rejestratory skonfigurowane w innym miejscu aplikacji.
  • formatters: słowniki definiujące różne rodzaje formatowania.
  • handlers: słowniki definiujące różne moduły obsługi, które określają, gdzie mają być zapisywane logi i których formatowania należy używać.
  • loggers: słowniki definiujące różne typy rejestratorów, które zawierają moduł obsługi i poziom logowania.