O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

Exemplo de código para autorização

Use as amostras de código nesta página para receber um token de acesso. É possível usar o token de acesso para fazer chamadas de API para leitura e gravação em estruturas e dispositivos.

Antes de começar, consulte Como autenticar com o OAuth 2.0.

Na guia "Visão geral" do cliente OAuth:

  • O ID do cliente é seu CLIENT_ID
  • A chave secreta do cliente é sua CLIENT_SECRET

Antes de cada chamada POST, receba um novo código de autorização:

  1. Copiar e atualizar seu URL de autorização
  2. Clique em [ACEITAR] e copie o novo código de autorização.
  3. Mude o valor do parâmetro code do POST's para corresponder ao novo código de autorização.
Detalhes de OAuth

Nas amostras de código, substitua AUTH_CODE, CLIENT_ID e CLIENT_SECRET.

Exemplos de solicitação de token de acesso

Use estes exemplos para receber um token de acesso.

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 o exemplo de código Java:

1. Faça o download dos arquivos okhttp e okio Jar mais recentes em http://square.github.io/okhttp/. Além disso, faça o download do arquivo stdlib do Kotlin em https://mvnrepository.com/artifact/org.jetbrains.kotlin/kotlin-stdlib (link em inglês), se a versão do okhttp depender dele.

2. Compile seu código.

3. Compile e execute o programa com as configurações de caminho de classe a seguir.

Substitua os números da versão da sua biblioteca nos comandos javac e java abaixo:
javac -cp .:okhttp-<ver>.jar:okio-<ver>.jar Sample.java
java -cp .:okhttp-<ver>.jar:okio-<ver>.jar:kotlin-stdlib-<ver>.jar Sample

Por exemplo, se você tiver as versões 3.11.0, 2.1.0 e 1.3.0, seus comandos ficariam assim:
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

Resposta do token de acesso

Para cada amostra, a resposta inclui o token de acesso.

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