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