Google is committed to advancing racial equity for Black communities. See how.

Beispielcode für die Autorisierung

Verwenden Sie die Codebeispiele auf dieser Seite, um ein Zugriffstoken zu erhalten. Sie können dann das Zugriffstoken verwenden, um API-Aufrufe zum Lesen und Schreiben von Strukturen und Geräten durchzuführen.

Bevor Sie beginnen, sehen Authentifizieren mit OAuth 2.0 .

Auf der Registerkarte Übersicht Ihres OAuth-Clients:

  • Kunden-ID ist Ihre CLIENT_ID
  • Client Secret ist Ihr CLIENT_SECRET

Rufen Sie vor jedem POST-Aufruf einen neuen Autorisierungscode ab:

  1. Kopieren Sie Ihre Autorisierungs-URL und laden Sie sie erneut.
  2. Klicken Sie auf [AKZEPTIEREN] und kopieren Sie den neuen Autorisierungscode
  3. Ändern Sie den Wert des POST - code - Parameter den neuen Autorisierungscode übereinstimmen
OAuth-Details

In den Codebeispielen, sollten Sie ersetzen AUTH_CODE , CLIENT_ID und CLIENT_SECRET .

Beispiele für Zugriffstoken-Anforderungen

Verwenden Sie diese Beispiele, um ein Zugriffstoken abzurufen.

Locken
curl -X POST \
  -d "code=AUTH_CODE&client_id=CLIENT_ID&client_secret=CLIENT_SECRET&grant_type=authorization_code" \
  "https://api.home.nest.com/oauth2/access_token"
Python 2
import requests

url = "https://api.home.nest.com/oauth2/access_token"

payload = "code=AUTH_CODE&client_id=CLIENT_ID&client_secret=CLIENT_SECRET&grant_type=authorization_code"

headers = {'content-type': 'application/x-www-form-urlencoded'}

response = requests.request("POST", url, data=payload, headers=headers)

print(response.text)
Python 3
import http.client

conn = http.client.HTTPSConnection("api.home.nest.com")

payload = "code=AUTH_CODE&client_id=CLIENT_ID&client_secret=CLIENT_SECRET&grant_type=authorization_code"

headers = { 'content-type': "application/x-www-form-urlencoded" }

conn.request("POST", "/oauth2/access_token", payload, headers)

res = conn.getresponse()
data = res.read()

print(data.decode("utf-8"))
Node.js
var qs = require("querystring");
var http = require("https");

var options = {
  "method": "POST",
  "hostname": "api.home.nest.com",
  "port": null,
  "path": "/oauth2/access_token",
  "headers": {
    "content-type": "application/x-www-form-urlencoded"
  }
};

var req = http.request(options, function (res) {
  var chunks = [];

  res.on("data", function (chunk) {
    chunks.push(chunk);
  });

  res.on("end", function () {
    var body = Buffer.concat(chunks);
    console.log(body.toString());
  });
});

req.write(qs.stringify({
  code: 'AUTH_CODE',
  client_id: 'CLIENT_ID',
  client_secret: 'CLIENT_SECRET',
  grant_type: 'authorization_code'
}));

req.end();
Gehen
package main

import (
    "fmt"
    "strings"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://api.home.nest.com/oauth2/access_token"

    payload := strings.NewReader("code=AUTH_CODE&client_id=CLIENT_ID&client_secret=CLIENT_SECRET&grant_type=authorization_code")

    req, _ := http.NewRequest("POST", url, payload)

    req.Header.Add("content-type", "application/x-www-form-urlencoded")

    res, _ := http.DefaultClient.Do(req)

    defer res.Body.Close()
    body, _ := ioutil.ReadAll(res.Body)

    fmt.Println(res)
    fmt.Println(string(body))
}
Java
import java.io.IOException;
import okhttp3.OkHttpClient;
import okhttp3.FormBody;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.MediaType;
import okhttp3.Response;

public class Sample {

    public static void main(String[] args) throws IOException {
        OkHttpClient client = new OkHttpClient();

        MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
        RequestBody body =
               RequestBody.create(mediaType, "code=AUTH_CODE&client_id=
               CLIENT_ID&client_secret=CLIENT_SECRET
               &grant_type=authorization_code");
        Request request = new Request.Builder()
          .url("https://api.home.nest.com/oauth2/access_token")
          .post(body)
          .build();

        Response response = client.newCall(request).execute();
        System.out.println(response.body().string());
    }

}

So verwenden Sie das Java-Codebeispiel:

1. Laden Sie auf die neueste okhttp und Okio Jar - Dateien http://square.github.io/okhttp/ . Darüber hinaus laden Sie die Kotlin stdlib Datei auf https://mvnrepository.com/artifact/org.jetbrains.kotlin/kotlin-stdlib wenn Ihre Version von okhttp davon abhängt.

2. Erstellen Sie Ihren Code.

3. Kompilieren Sie das Programm und führen Sie es mit den folgenden Klassenpfadeinstellungen aus.

Ersetzen Sie Ihre Bibliothek Versionsnummern in den javac und java Befehle unter:
javac -cp .:okhttp-<ver>.jar:okio-<ver>.jar Sample.java
java -cp .:okhttp-<ver>.jar:okio-<ver>.jar:kotlin-stdlib-<ver>.jar Sample

Zum Beispiel, wenn Sie die folgenden Versionen 3.11.0 haben, 2.1.0 und 1.3.0, würde Ihre Befehle wie folgt aussehen:
javac -cp .:okhttp-3.11.0.jar:okio-2.1.0.jar Sample.java
java -cp .:okhttp-3.11.0.jar:okio-2.1.0.jar:kotlin-stdlib-1.3.0.jar Sample

Antwort auf Zugriffstoken

Für jedes Beispiel enthält die Antwort das Zugriffstoken.

  "access_token": "c.twC2q...",
  "expires_in": 315360000