동기화 요청

<ph type="x-smartling-placeholder"> </ph>

요청 동기화는 모든 Google 사용자의 처리에 SYNC 요청을 트리거합니다. 지정된 해당 서비스와 연결된 agentUserId( (원래 SYNC 요청에서 전송됨) 이렇게 하면 기기 계정을 연결 해제했다가 다시 연결하지 않고도 직접 관리할 수 있습니다 여기에 연결된 모든 사용자 SYNC 요청을 수신합니다.

SYNC 요청을 트리거해야 합니다.

  • 사용자가 새 기기를 추가하는 경우
  • 사용자가 기존 기기를 삭제하는 경우
  • 사용자가 기존 기기의 이름을 변경하는 경우
  • 새 기기 유형, 트레잇을 구현하거나 새 기기 기능을 추가하는 경우.

시작하기

요청 동기화를 구현하려면 다음 단계를 따르세요.

Google HomeGraph API 사용 설정

  1. Google Cloud Console에서 HomeGraph API 페이지로 이동합니다.

    HomeGraph API 페이지로 이동
  2. smart home 프로젝트 ID와 일치하는 프로젝트를 선택합니다.
  3. 사용 설정을 클릭합니다.

서비스 계정 키 만들기

다음 안내에 따라 Google Cloud Console에서 서비스 계정 키를 생성합니다.

참고: 수행할 때 올바른 GCP 프로젝트를 사용하고 있는지 확인하세요. 다음 단계를 따르세요. smart home 프로젝트 ID와 일치하는 프로젝트입니다.
  1. Google Cloud Console에서 서비스 계정 키 만들기 페이지로 이동합니다.

    서비스 계정 키 만들기 페이지로 이동
  2. 서비스 계정 목록에서 다음을 선택합니다. 새 서비스 계정.
  3. 서비스 계정 이름 필드에 이름을 입력합니다.
  4. 서비스 계정 ID 필드에 ID를 입력합니다.
  5. 역할 목록에서 서비스 계정 >을 선택합니다. <ph type="x-smartling-placeholder"></ph> 서비스 계정 토큰 생성자로 이동합니다.

  6. 키 유형JSON 옵션을 선택합니다.

  7. 만들기를 클릭합니다. 키가 포함된 JSON 파일 컴퓨터에 다운로드할 수 있습니다.

API 호출

HTTP

Home Graph API는 HTTP 엔드포인트를 제공합니다.

  1. 다운로드한 서비스 계정 JSON 파일을 사용하여 JSON 웹을 만듭니다. 토큰 (JWT)입니다. 자세한 내용은 <ph type="x-smartling-placeholder"></ph> 서비스 계정을 사용하여 인증을 참조하세요.
  2. 다음을 사용하여 OAuth 2.0 액세스 토큰을 가져옵니다. https://www.googleapis.com/auth/homegraph 범위 사용 oauth2l:
  3. oauth2l fetch --credentials service-account.json \
      --scope https://www.googleapis.com/auth/homegraph
    
  4. agentUserId를 사용하여 JSON 요청을 만듭니다. 다음은 요청 동기화의 샘플 JSON 요청입니다.
  5. {
      "agentUserId": "user-123"
    }
    
  6. HTTP POST에서 요청 동기화 JSON과 토큰을 결합 Google Home Graph 엔드포인트에 요청할 수 있습니다. 이 예시에서는 다음과 같이 curl를 사용하여 명령줄에서 요청합니다. 테스트:
  7. curl -X POST -H "Authorization: Bearer ACCESS_TOKEN" \
      -H "Content-Type: application/json" \
      -d @request-body.json \
      "https://homegraph.googleapis.com/v1/devices:requestSync"
    

gRPC

Home Graph API는 gRPC 엔드포인트를 제공합니다.

  1. Home Graph API의 프로토콜 버퍼 서비스 정의를 확인합니다.
  2. gRPC 개발자 문서에 따라 지원되는 언어 중 하나로 클라이언트 스텁을 생성합니다.
  3. RequestSync 메서드를 호출합니다.

Node.js

Google API Node.js 클라이언트는 Home Graph API에 바인딩을 제공합니다.

  1. 애플리케이션 기본 사용자 인증 정보를 사용하여 google.homegraph 서비스를 초기화합니다.
  2. RequestSyncDevicesRequest를 사용하여 requestSync 메서드를 호출합니다. 빈 RequestSyncDevicesResponse와 함께 Promise를 반환합니다.
const homegraphClient = homegraph({
  version: 'v1',
  auth: new GoogleAuth({
    scopes: 'https://www.googleapis.com/auth/homegraph'
  })
});

const res = await homegraphClient.devices.requestSync({
  requestBody: {
    agentUserId: 'PLACEHOLDER-USER-ID',
    async: false
  }
});
    

자바

Java용 HomeGraph API 클라이언트 라이브러리는 Home Graph API의 결합을 제공합니다.

  1. 애플리케이션 기본 사용자 인증 정보를 사용하여 HomeGraphApiService를 초기화합니다.
  2. RequestSyncDevicesRequest를 사용하여 requestSync 메서드를 호출합니다. 빈 ReportStateAndNotificationResponse을 반환합니다.
// Get Application Default credentials.
GoogleCredentials credentials =
    GoogleCredentials.getApplicationDefault()
        .createScoped(List.of("https://www.googleapis.com/auth/homegraph"));

// Create Home Graph service client.
HomeGraphService homegraphService =
    new HomeGraphService.Builder(
            GoogleNetHttpTransport.newTrustedTransport(),
            GsonFactory.getDefaultInstance(),
            new HttpCredentialsAdapter(credentials))
        .setApplicationName("HomeGraphExample/1.0")
        .build();

// Request sync.
RequestSyncDevicesRequest request =
    new RequestSyncDevicesRequest().setAgentUserId("PLACEHOLDER-USER-ID").setAsync(false);
homegraphService.devices().requestSync(request);
    

오류 응답

동기화 요청을 호출할 때 다음 오류 응답 중 하나가 표시될 수 있습니다. 이러한 응답은 HTTP 상태 코드의 형식으로 제공됩니다.

  • 400 Bad Request - 서버에서 처리하지 못했습니다. 잘못된 구문으로 인해 클라이언트가 보낸 요청에서 오류가 발생합니다. 일반적인 원인 잘못된 형식의 JSON을 포함하거나 "" 대신 null을(를) 사용하세요. - 문자열 값
  • 403 Forbidden - 서버에서 다음을 처리하지 못했습니다. 오류로 인해 해당 agentUserId에 대한 요청이 토큰을 새로고침합니다 OAuth 엔드포인트가 응답하는지 확인하기 토큰 요청을 갱신하고 사용자 계정 연결을 있습니다.
  • 404 Not Found - 요청한 리소스를 나중에 사용 가능할 수도 있습니다. 일반적으로 이는 사용자 계정이 Google에 연결되지 않았거나 agentUserId agentUserIdSYNC 응답을 했는지 확인합니다. DISCONNECT 인텐트를 처리합니다.
  • 429 Too Many Requests - 최대 동시 동기화 수 해당 agentUserId에 대한 요청이 초과되었습니다. 발신자 async가 없으면 동시 동기화 요청을 한 번만 실행할 수 있습니다. 플래그를 true로 설정하면 됩니다