En Google, luchamos por la equidad racial de la comunidad negra. Más información

Código de muestra para la autorización

Usa las muestras de código en esta página para obtener un token de acceso. Luego, puedes usar el token de acceso para realizar llamadas a las API de lectura y escritura en estructuras y dispositivos.

Antes de comenzar, consulta Autentica con OAuth 2.0.

En la pestaña Descripción general de tu cliente de OAuth, sigue estos pasos:

  • El ID de cliente es su CLIENT_ID.
  • El secreto del cliente es su CLIENT_SECRET

Antes de cada llamada POST, obtenga un nuevo código de autorización:

  1. Copiar y volver a cargar la URL de autorización
  2. Haga clic en [ACEPTAR] y copie el nuevo código de autorización.
  3. Cambia el valor del parámetro code de POST&s3; para que coincida con el nuevo código de autorización
Detalles de OAuth

En las muestras de código, asegúrate de reemplazar AUTH_CODE, CLIENT_ID y CLIENT_SECRET.

Ejemplos de solicitudes de token de acceso

Usa estos ejemplos para obtener un token de acceso.

Curl
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();
Ir
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());
    }

}

Para usar el ejemplo de código Java, haz lo siguiente:

1. Descarga los archivos okhttp y okio Jar más recientes en http://square.github.io/okhttp/. Además, descarga el archivo stdlib de Kotlin en https://mvnrepository.com/artifact/org.jetbrains.kotlin/kotlin-stdlib si tu versión de okhttp depende de él.

2. Construye tu código.

3. Compila y ejecuta el programa con la siguiente configuración de ruta de clase.

Sustituye los números de versión de tu biblioteca en los comandos javac y java que se indican a continuación:
javac -cp .:okhttp-<ver>.jar:okio-<ver>.jar Sample.java
java -cp .:okhttp-<ver>.jar:okio-<ver>.jar:kotlin-stdlib-<ver>.jar Sample

Por ejemplo, si tienes las siguientes versiones 3.11.0, 2.1.0 y 1.3.0, tus comandos se verán de la siguiente manera:
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

Respuesta del token de acceso

Para cada muestra, la respuesta incluye el token de acceso.

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