Instrukcje
Narzędzie do interaktywnych fragmentów kodu pozwala łatwo testować żądania do interfejsu API i generować próbki kodu dla tych żądań. W każdej z nich narzędzie wyświetla fragmenty kodu w przypadku co najmniej 1 przypadku użycia. Przypadki użycia opisują każdy typ tej metody. Możesz na przykład wywołać metodę channels.list
, by pobrać dane o konkretnym kanale lub kanale bieżącego użytkownika.
Wykonywanie żądań do interfejsu API
Żądania możesz wykonywać, klikając przycisk Wykonaj obok listy parametrów żądań. Jeśli aplikacja nie została wcześniej przez Ciebie upoważniona do przesyłania w Twoim imieniu żądań do interfejsu API, pojawi się prośba o wykonanie tej prośby. Gdy będzie wymagane wykonanie operacji zapisu (wstawienie, zaktualizowanie lub usunięcie zasobów powiązanych z kanałem), pojawi się prośba o potwierdzenie, że chcesz wykonać żądanie przed wykonaniem żądania.
Przełącz fragmenty kodu i pełne przykłady
W każdym przypadku użycia narzędzie wyświetla fragment kodu, który identyfikuje kod przypisany do określonej metody. Każdy fragment kodu zawiera wywołanie wywoływanej metody oraz wartości parametrów i właściwości używane w żądaniu do interfejsu API.
Narzędzie pokazuje też pełny fragment kodu, który umieszcza ten fragment w szablonie definiującym podstawowe funkcje służące do autoryzowania i tworzenia żądań do interfejsu API. Za pomocą suwaka nad przykładami możesz przełączać się między fragmentem a całą próbką:
Lokalne uruchamianie pełnych przykładów kodu
Pełne przykłady kodu zostały skopiowane i uruchomione lokalnie. Pamiętaj o tych wymaganiach wstępnych i skonfiguruj etapy uruchamiania pełnych przykładów kodu:
Wymagania wstępne
- Java 1.7 lub nowsza
- Gradle w wersji 2.3 lub nowszej
Konfigurowanie projektu i uruchamianie przykładowego kodu
-
Utwórz projekt w konsoli interfejsu API i skonfiguruj dane logowania dla aplikacji internetowej. Ustaw odpowiednie identyfikatory URI przekierowania.
-
Aby przygotować projekt, wykonaj instrukcje podane w Krótkim przewodniku po języku Java API, ale zastąp zawartość domyślnego pliku
build.gradle
tym kodem:apply plugin: 'java' apply plugin: 'application' mainClassName = 'ApiExample' sourceCompatibility = 1.7 targetCompatibility = 1.7 version = '1.0' repositories { mavenCentral() } dependencies { compile 'com.google.api-client:google-api-client:1.22.0' compile 'com.google.oauth-client:google-oauth-client-jetty:1.22.0' compile 'com.google.apis:google-api-services-youtube:v3-rev182-1.22.0' compile group: 'com.google.code.gson', name: 'gson', version: '1.7.2' compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.4.4' } compileJava { options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation" }
-
W katalogu roboczym zapisz plik
client_secrets.json
powiązany z Twoimi danymi logowania w usłudzesrc/main/resources/client_secret.json
. -
Skopiuj cały przykładowy kod z katalogu roboczego do
src/main/java/ApiExample.java
. Nazwa klasy w każdej próbce toApiExample
, więc nie musisz modyfikować plikubuild.gradle
w celu uruchomienia różnych próbek. -
Uruchom przykład z poziomu wiersza poleceń:
gradle -q run
-
Większość próbek drukuje coś na:
STDOUT
. Możesz też zajrzeć na stronę YouTube, aby sprawdzić wpływ żądań zapisu danych, takich jak prośby o utworzenie playlist lub sekcji kanału.
-
Utwórz projekt w konsoli interfejsu API i skonfiguruj dane logowania dla aplikacji internetowej. Ustaw autoryzowane źródła JavaScript, aby identyfikować URL, z którego będziesz wysyłać żądania (np.
http://localhost
). -
Skopiuj pełny przykładowy kod do pliku lokalnego dostępnego dla Twojego serwera internetowego (np.
/var/www/html/example.html
). -
Znajdź w przykładowym kodzie wiersz, który wskazuje identyfikator klienta, który będzie używany w żądaniu, i zastąp tę wartość identyfikatorem klienta swoich danych logowania:
gapi.client.init({ 'clientId': 'REPLACE_ME',
-
Otwórz plik w przeglądarce (np.
http://localhost/example.html
). Zalecamy użycie przeglądarki z konsolą do debugowania, np. Google Chrome. -
W razie potrzeby autoryzuj żądanie. Jeśli żądanie jest autoryzowane, konsola debugowania powinna wyświetlić odpowiedź interfejsu API na żądanie jako obiekt JSON.
Wymagania wstępne
- Musisz zainstalować Node.js.
- Narzędzie do zarządzania pakietami npm (w wersji Node.js).
- Biblioteka klienta interfejsów API Google dla Node.js:
npm install googleapis --save
- Dostęp do internetu i przeglądarki.
- Musisz mieć konto Google.
Konfigurowanie projektu i uruchamianie przykładowego kodu
-
Utwórz projekt w konsoli interfejsu API i skonfiguruj dane logowania OAuth 2.0 w Konsoli interfejsów API Google. Podczas konfigurowania danych logowania ustaw typ aplikacji na Inne.
-
Zapisz plik
client_secret.json
powiązany z Twoimi danymi logowania w pliku lokalnym. -
Skopiuj pełny przykładowy kod do pliku lokalnego w tym samym katalogu, w którym znajduje się plik
client_secret.json
(lub zmodyfikuj przykład, aby prawidłowo zidentyfikować lokalizację tego pliku). -
Uruchom przykład z poziomu wiersza poleceń:
node sample.js
-
Większość próbek drukuje coś przez
STDOUT
lub (na potrzeby aplikacji internetowych) do przeglądanej strony. Możesz też zajrzeć na stronę YouTube, aby sprawdzić wpływ żądań zapisu danych, takich jak prośby o utworzenie playlist lub sekcji kanału.
Wymagania wstępne
- Python w wersji 2.6 lub nowszej
- Narzędzie do zarządzania pakietami pip
- Biblioteka klienta interfejsów API Google dla języka Python:
pip install --upgrade google-api-python-client
- google-auth, google-auth-oauthlib i google-auth-httplib2 w celu autoryzacji użytkowników;
pip install --upgrade google-auth google-auth-oauthlib google-auth-httplib2
- platformy aplikacji internetowej Flask w Pythonie (jeśli używasz przykładów Pythona do aplikacji serwera WWW).
pip install --upgrade flask
- Biblioteka żądań HTTP.
pip install --upgrade requests
Konfigurowanie projektu i uruchamianie przykładowego kodu
-
Utwórz projekt w konsoli interfejsu API i skonfiguruj dane logowania OAuth 2.0 w Konsoli interfejsów API Google. Podczas konfigurowania danych logowania ustaw typ aplikacji na Aplikacja internetowa dla przykładów, które używają platformy aplikacji internetowej Flask Python, a także ustaw autoryzowane identyfikatory URI przekierowania dla tych danych logowania. W innym przypadku ustaw typ aplikacji na Inne.
-
Zapisz plik
client_secret.json
powiązany z Twoimi danymi logowania w pliku lokalnym. -
Skopiuj pełny przykładowy kod do pliku lokalnego w tym samym katalogu, w którym znajduje się plik
client_secret.json
(lub zmodyfikuj przykład, aby prawidłowo zidentyfikować lokalizację tego pliku). -
Uruchom przykład z poziomu wiersza poleceń:
python sample.py
Uwaga dla przykładowych aplikacji serwera WWW:
Jeśli uruchamiasz próbki w języku Python dla aplikacji serwera WWW, uruchomienie skryptu uruchomi lokalny serwer WWW. Aby wykonać żądanie do interfejsu API, musisz otworzyć wyświetloną stronę w przeglądarce. Na przykład przykłady w Pythonie, które korzystają z platformy aplikacji internetowej Flask, zawierają wiersz:app.run('localhost', 8080, debug=True)
Ten kod rozpoczyna lokalny serwer WWW pod adresemhttp://localhost:8080
. Skrypt nie próbuje jednak wykonać żądania do interfejsu API, dopóki nie otworzysz w przeglądarce stronyhttp://localhost:8080
. (URL serwera lokalnego musi być też ustawiony jako autoryzowany identyfikator URI przekierowania danych uwierzytelniających). -
Większość próbek drukuje coś przez
STDOUT
lub (na potrzeby aplikacji internetowych) do przeglądanej strony. Możesz też zajrzeć na stronę YouTube, aby sprawdzić wpływ żądań zapisu danych, takich jak prośby o utworzenie playlist lub sekcji kanału.
Wymagania wstępne
- PHP w wersji 5.4 lub nowszej z zainstalowanym interfejsem wiersza poleceń i rozszerzeniem JSON.
- Narzędzie do zarządzania zależnościami Composer.
- Biblioteka klienta interfejsów API Google dla PHP:
php composer.phar require google/apiclient:^2.0
Konfigurowanie projektu i uruchamianie przykładowego kodu
-
Utwórz projekt w konsoli interfejsu API i skonfiguruj dane logowania OAuth 2.0 w Konsoli interfejsów API Google. Podczas konfigurowania danych logowania ustaw typ aplikacji na Inne.
-
Zapisz plik
client_secret.json
powiązany z Twoimi danymi logowania w pliku lokalnym. -
Skopiuj pełny przykładowy kod do pliku lokalnego w tym samym katalogu, w którym znajduje się plik
client_secret.json
(lub zmodyfikuj przykład, aby prawidłowo zidentyfikować lokalizację tego pliku). -
Uruchom przykład z poziomu wiersza poleceń:
php sample.php
-
Większość próbek drukuje coś przez
STDOUT
lub (na potrzeby aplikacji internetowych) do przeglądanej strony. Możesz też zajrzeć na stronę YouTube, aby sprawdzić wpływ żądań zapisu danych, takich jak prośby o utworzenie playlist lub sekcji kanału.
Wymagania wstępne
- Ruby 2.0 lub nowsza
- Biblioteka klienta interfejsów API Google dla języka Ruby:
gem install google-api-client
Konfigurowanie projektu i uruchamianie przykładowego kodu
-
Utwórz projekt w konsoli interfejsu API i skonfiguruj dane logowania OAuth 2.0 w Konsoli interfejsów API Google. Podczas konfigurowania danych logowania ustaw typ aplikacji na Inne.
-
Zapisz plik
client_secret.json
powiązany z Twoimi danymi logowania w pliku lokalnym. -
Skopiuj pełny przykładowy kod do pliku lokalnego w tym samym katalogu, w którym znajduje się plik
client_secret.json
(lub zmodyfikuj przykład, aby prawidłowo zidentyfikować lokalizację tego pliku). -
Uruchom przykład z poziomu wiersza poleceń:
ruby sample.rb
-
Większość próbek drukuje coś przez
STDOUT
lub (na potrzeby aplikacji internetowych) do przeglądanej strony. Możesz też zajrzeć na stronę YouTube, aby sprawdzić wpływ żądań zapisu danych, takich jak prośby o utworzenie playlist lub sekcji kanału.
-
Utwórz projekt w konsoli interfejsu API i skonfiguruj dane logowania OAuth 2.0 w Konsoli interfejsów API Google. Podczas konfigurowania danych logowania ustaw typ aplikacji na Inne.
-
Zapisz plik
client_secret.json
powiązany z Twoimi danymi logowania w pliku lokalnym. -
Skopiuj pełny przykładowy kod do pliku lokalnego w tym samym katalogu, w którym znajduje się plik
client_secret.json
(lub zmodyfikuj przykład, aby prawidłowo zidentyfikować lokalizację tego pliku). -
Uruchom przykład z poziomu wiersza poleceń:
go run sample.go
-
Większość próbek drukuje coś przez
STDOUT
lub (na potrzeby aplikacji internetowych) do przeglądanej strony. Możesz też zajrzeć na stronę YouTube, aby sprawdzić wpływ żądań zapisu danych, takich jak prośby o utworzenie playlist lub sekcji kanału.
Użyj stałych szablonów
Jak wspomniano powyżej, pełne fragmenty kodu wykorzystują powtarzalny kod do autoryzacji i tworzenia żądań do interfejsu API. Na przykład funkcja build_resource
w przykładach w Pythonie wykorzystuje słownik, który mapuje właściwości zasobów na ich wartości, aby utworzyć zasób, który można wstawić lub zaktualizować. Podobne funkcje są dostępne w językach JavaScript, PHP, Ruby, Go i Apps Script.
Na przykład na poniższych kartach widać, jak funkcje schematyczne dotyczące tworzenia zasobów będą wywoływane w celu utworzenia zasobu playlist
. Pamiętaj, że schematyczne funkcje nie muszą wiedzieć, jaki typ zasobu jest tworzony.
function createResource(properties) { var resource = {}; var normalizedProps = properties; for (var p in properties) { var value = properties[p]; if (p && p.substr(-2, 2) == '[]') { var adjustedName = p.replace('[]', ''); if (value) { normalizedProps[adjustedName] = value.split(','); } delete normalizedProps[p]; } } for (var p in normalizedProps) { // Leave properties that don't have values out of inserted resource. if (normalizedProps.hasOwnProperty(p) && normalizedProps[p]) { var propArray = p.split('.'); var ref = resource; for (var pa = 0; pa < propArray.length; pa++) { var key = propArray[pa]; if (pa == propArray.length - 1) { ref[key] = normalizedProps[p]; } else { ref = ref[key] = ref[key] || {}; } } }; } return resource; } var resource = createResource({ 'snippet.title': 'Sample playlist ', 'snippet.description': 'This is a sample playlist description.', 'snippet.tags[]': 'JavaScript code, interactive', 'snippet.defaultLanguage': '', 'status.privacyStatus': 'private' }
# Build a resource based on a list of properties given as key-value pairs. # Leave properties with empty values out of the inserted resource. def build_resource(properties): resource = {} for p in properties: # Given a key like "snippet.title", split into "snippet" and "title", where # "snippet" will be an object and "title" will be a property in that object. prop_array = p.split('.') ref = resource for pa in range(0, len(prop_array)): is_array = False key = prop_array[pa] # Convert a name like "snippet.tags[]" to snippet.tags, but handle # the value as an array. if key[-2:] == '[]': key = key[0:len(key)-2:] is_array = True if pa == (len(prop_array) - 1): # Leave properties without values out of inserted resource. if properties[p]: if is_array: ref[key] = properties[p].split(',') else: ref[key] = properties[p] elif key not in ref: # For example, the property is "snippet.title", but the resource does # not yet have a "snippet" object. Create the snippet object here. # Setting "ref = ref[key]" means that in the next time through the # "for pa in range ..." loop, we will be setting a property in the # resource's "snippet" object. ref[key] = {} ref = ref[key] else: # For example, the property is "snippet.description", and the resource # already has a "snippet" object. ref = ref[key] return resource resource = build_resource({ 'snippet.title': 'Sample playlist ', 'snippet.description': 'This is a sample playlist description.', 'snippet.tags[]': 'Python code, interactive', 'snippet.defaultLanguage': '', 'status.privacyStatus': 'private'}
// Add a property to the resource. function addPropertyToResource(&$ref, $property, $value) { $keys = explode(".", $property); $is_array = false; foreach ($keys as $key) { // Convert a name like "snippet.tags[]" to "snippet.tags" and // set a boolean variable to handle the value like an array. if (substr($key, -2) == "[]") { $key = substr($key, 0, -2); $is_array = true; } $ref = &$ref[$key]; } // Set the property value. Make sure array values are handled properly. if ($is_array && $value) { $ref = $value; $ref = explode(",", $value); } elseif ($is_array) { $ref = array(); } else { $ref = $value; } } // Build a resource based on a list of properties given as key-value pairs. function createResource($properties) { $resource = array(); foreach ($properties as $prop => $value) { if ($value) { addPropertyToResource($resource, $prop, $value); } } return $resource; } $propertyObject = createResource(array( 'snippet.title' => 'Sample playlist ', 'snippet.description' => 'This is a sample playlist description.', 'snippet.tags[]' => 'Python code, interactive', 'snippet.defaultLanguage' => '', 'status.privacyStatus' => 'private'));
# Build a resource based on a list of properties given as key-value pairs. def create_resource(properties) resource = {} properties.each do |prop, value| ref = resource prop_array = prop.to_s.split(".") for p in 0..(prop_array.size - 1) is_array = false key = prop_array[p] if key[-2,2] == "[]" key = key[0...-2] is_array = true end if p == (prop_array.size - 1) if is_array if value == "" ref[key.to_sym] = [] else ref[key.to_sym] = value.split(",") end elsif value != "" ref[key.to_sym] = value end elsif ref.include?(key.to_sym) ref = ref[key.to_sym] else ref[key.to_sym] = {} ref = ref[key.to_sym] end end end return resource end resource = create_resource({ 'snippet.title': 'Sample playlist ', 'snippet.description': 'This is a sample playlist description.', 'snippet.tags[]': 'Ruby code, interactive', 'snippet.default_language': '', 'status.privacy_status': 'private'})
// Build an object from an object containing properties as key-value pairs function createResource(properties) { var res = {}; var normalizedProps = {}; for (var p in properties) { var value = properties[p]; if (p.substr(-2, 2) == '[]' && value) { var adjustedName = p.replace('[]', ''); normalizedProps[adjustedName] = value.split(','); } else { normalizedProps[p] = value; } } for (var p in normalizedProps) { if (normalizedProps.hasOwnProperty(p) && normalizedProps[p]) { var propArray = p.split('.'); var ref = res; for (var pa = 0; pa < propArray.length; pa++) { var key = propArray[pa]; if (pa == propArray.length - 1) { ref[key] = normalizedProps[p]; } else { ref = ref[key] = ref[key] || {}; } } }; } return res; } var resource = createResource({ 'snippet.title': 'Sample playlist ', 'snippet.description': 'This is a sample playlist description.', 'snippet.tags[]': 'Apps Script code, interactive', 'snippet.defaultLanguage': '', 'status.privacyStatus': 'private' });
func addPropertyToResource(ref map[string]interface{}, keys []string, value string, count int) map[string]interface{} { for k := count; k < (len(keys) - 1); k++ { switch val := ref[keys[k]].(type) { case map[string]interface{}: ref[keys[k]] = addPropertyToResource(val, keys, value, (k + 1)) case nil: next := make(map[string]interface{}) ref[keys[k]] = addPropertyToResource(next, keys, value, (k + 1)) } } // Only include properties that have values. if (count == len(keys) - 1 && value != "") { valueKey := keys[len(keys)-1] if valueKey[len(valueKey)-2:] == "[]" { ref[valueKey[0:len(valueKey)-2]] = strings.Split(value, ",") } else if len(valueKey) > 4 && valueKey[len(valueKey)-4:] == "|int" { ref[valueKey[0:len(valueKey)-4]], _ = strconv.Atoi(value) } else if value == "true" { ref[valueKey] = true } else if value == "false" { ref[valueKey] = false } else { ref[valueKey] = value } } return ref } func createResource(properties map[string]string) string { resource := make(map[string]interface{}) for key, value := range properties { keys := strings.Split(key, ".") ref := addPropertyToResource(resource, keys, value, 0) resource = ref } propJson, err := json.Marshal(resource) if err != nil { log.Fatal("cannot encode to JSON ", err) } return string(propJson) } func main() { properties := (map[string]string{ "snippet.title": "Sample playlist ", "snippet.description": "This is a sample playlist description.", "snippet.tags[]": "Go code, interactive", "snippet.defaultLanguage": "", "status.privacyStatus": "private", }) res := createResource(properties)
Wczytaj istniejące zasoby
Aby przetestować żądanie aktualizacji istniejącego zasobu, możesz wczytać bieżące wartości właściwości tego zasobu do formularza aktualizacji. Aby na przykład zaktualizować metadane filmu, wpisz jego identyfikator w polu właściwości id
i kliknij przycisk Wczytaj zasób. Aktualne wartości właściwości zostaną wczytane do formularza. Możesz zaktualizować tylko te wartości, które chcesz zmienić.
![](https://developers-dot-devsite-v2-prod.appspot.com/static/youtube/images/interactive-snippet-load-resource.png?authuser=3&hl=pl)