Notice: We're retiring Works with Nest. See the home page for more information.
Google is committed to advancing racial equity for Black communities. See how.
이 페이지는 Cloud Translation API를 통해 번역되었습니다.
Switch to English

인증을위한 샘플 코드

이 페이지의 코드 샘플을 사용하여 액세스 토큰을 얻으십시오. 그런 다음 액세스 토큰을 사용하여 API 호출을 작성하여 구조 및 장치를 읽고 쓸 수 있습니다.

시작하기 전에 OAuth 2.0으로 인증을 참조하십시오.

OAuth 클라이언트의 개요 탭에서 :

  • 고객 ID는 CLIENT_ID입니다
  • 고객 비밀은 CLIENT_SECRET입니다

각 POST 호출 전에 새로운 인증 코드를 받으십시오.

  1. 인증 URL 복사 및 다시로드
  2. [ACCEPT]를 클릭하고 새 인증 코드를 복사하십시오
  3. 새 인증 코드와 일치하도록 POST의 code 매개 변수 값을 변경하십시오.
OAuth 세부 사항

코드 샘플에서 AUTH_CODE , CLIENT_IDCLIENT_SECRET 을 바꾸 CLIENT_SECRET .

액세스 토큰 요청 예

다음 예제를 사용하여 액세스 토큰을 얻으십시오.

곱슬 곱슬하다
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"
파이썬 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)
파이썬 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();
가다
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))
}
자바
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());
    }

}

Java 코드 예제를 사용하려면 다음을 수행하십시오.

1. http://square.github.io/okhttp/ 에서 최신 okhttp 및 okio Jar 파일을 다운로드 하십시오 . 또한 okhttp 버전이 여기에 의존하는 경우 https://mvnrepository.com/artifact/org.jetbrains.kotlin/kotlin-stdlib 에서 Kotlin stdlib 파일을 다운로드하십시오.

2. 코드를 작성하십시오.

3. 다음 클래스 경로 설정으로 프로그램을 컴파일하고 실행하십시오.

아래의 javac 및 java 명령에서 라이브러리 버전 번호를 대체하십시오.
javac -cp .:okhttp- <ver> .jar:okio- <ver> .jar Sample.java
java -cp .:okhttp- <ver> .jar:okio- <ver> .jar:kotlin-stdlib- <ver> .jar Sample

예를 들어, 다음 버전 3.11.0, 2.1.0 및 1.3.0이있는 경우 명령은 다음과 같습니다.
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

액세스 토큰 응답

각 샘플에 대한 응답에는 액세스 토큰이 포함됩니다.

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