계정 승인

Google Cloud 및 기기 액세스 프로젝트를 만들었으면 기기에서 지원되는 Google Nest 기기가 있는 Google 계정을 승인할 수 있습니다. SDM API입니다.

구조 및 기기를 보려면 Google 계정을 Device Access 프로젝트를 실행합니다. PCM을 사용하면 user developer에서 구조 및 기기 데이터에 액세스하도록 허용합니다.

이 가이드에서는 user 와 developer의 역할을 모두 합니다.

  1. 웹에서 다음 링크 열기 브라우저, 다음과 같이 바꿉니다.

    1. Device Access Project ID로 project-id
    2. oauth2-client-idGoogle 클라우드 사용자 인증 정보
    를 통해 개인정보처리방침을 정의할 수 있습니다.
    https://nestservices.google.com/partnerconnections/project-id/auth?redirect_uri=https://www.google.com&access_type=offline&prompt=consent&client_id=oauth2-client-id&response_type=code&scope=https://www.googleapis.com/auth/sdm.service
    
  2. 최근에 여러 계정을 사용하여 Google에 로그인한 경우 초기 계정 선택 화면에 Google 계정을 탭합니다. 이 경우 현재 사용 중인 기기에 연결된 Google 계정을 선택합니다. Device Access에 대한 승인을 요청합니다.
  3. Google Nest 권한 화면은 PCM 자체입니다. 여기에서 구조 및 기기 권한을 부여할 수 있습니다. 사용 다음 권한이 있는 홈 (1단계) 및 홈에 있는 모든 기기에 지원하는 경우 (2단계) 다음을 클릭합니다.
  4. 프로젝트 이름 화면에서 계속 진행할 계정을 선택합니다. 프로젝트 이름은 Google Cloud 프로젝트의 이름입니다. 에 대해 승인하려는 Google 계정 SDM API입니다. 이전과 동일한 Google 계정을 사용합니다.
  5. 계정을 선택하면 Google에서 확인하지 않은 앱입니다. 이 경우 계속하려면 고급 옵션을 선택한 다음 프로젝트 이름으로 이동 (안전하지 않음)을 클릭합니다. 자세한 내용은 아직 Google에서 확인하지 않은 앱 확인할 수 있습니다
  6. 프로젝트 이름 권한 부여 화면에서 허용을 클릭하여 Google 계정에 액세스할 수 있는 프로젝트 권한
  7. 선택사항 확인 화면에서 원하는 권한을 확인합니다. 체크박스를 선택하고 허용을 클릭하여 확인합니다.
  8. 다음으로 리디렉션됩니다. https://www.google.com. 승인 코드는 URL에서 code 매개변수로 반환됩니다. 다음과 같은 형식이어야 합니다.

    https://www.google.com?code=authorization-code&scope=https://www.googleapis.com/auth/sdm.service
    
  9. 승인 코드를 복사합니다.

액세스 토큰 가져오기

인증 코드를 사용하여 액세스 토큰을 검색합니다. SDM API를 호출하는 데 사용할 수 있습니다

  1. 터미널을 열고 다음을 실행합니다. 다음 curl 명령어로 대체합니다.

    1. oauth2-client-idoauth2-client-secret 계정의 OAuth2 클라이언트 ID와 클라이언트 보안 비밀번호를 Google Cloud 사용자 인증 정보
    2. authorization-code를 이전 단계에서 받은 코드로 바꿉니다.
    curl -L -X POST 'https://www.googleapis.com/oauth2/v4/token?client_id=oauth2-client-id&client_secret=oauth2-client-secret&code=authorization-code&grant_type=authorization_code&redirect_uri=https://www.google.com'
    
  2. Google OAuth는 두 개의 토큰, 즉 액세스 토큰과 갱신 토큰을 사용할 수 있습니다.

    {
      "access_token": "access-token",
      "expires_in": 3599,
      "refresh_token": "refresh-token",
      "scope": "https://www.googleapis.com/auth/sdm.service",
      "token_type": "Bearer"
    }
    두 값을 모두 복사합니다. 액세스 토큰은 SDM API 및 갱신 토큰은 액세스할 수 있습니다.

기기 목록 호출

다음을 수행할 때까지 승인이 완료되지 않습니다. 첫 번째 devices.list 드림 새 액세스 토큰으로 호출합니다. 이 최초 호출은 인증 프로세스를 완료하고, 다음과 같은 경우 이벤트를 활성화합니다. 이미 Pub/Sub 구독을 설정한 것입니다

curl를 사용하여 devices 엔드포인트를 호출합니다.

curl -X GET 'https://smartdevicemanagement.googleapis.com/v1/enterprises/project-id/devices' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer access-token'

호출이 성공하면 Device Access에 연결된 기기 목록이 반환됩니다. 살펴보겠습니다 각 기기에는 사용 가능한 고유한 특성 목록이 있습니다.

{
  "devices": [
    {
      "name": "enterprises/project-id/devices/device-id",
      "type": "sdm.devices.types.device-type",
      "traits": { ... },
      "parentRelations": [
        {
          "parent": "enterprises/project-id/structures/structure-id/rooms/room-id",
          "displayName": "device-room-name"
        }
      ]
    }
  ]
}

갱신 토큰 사용 방법

SDM API용 액세스 토큰은 Google OAuth에서 반환된 expires_in 매개변수에 명시된 대로 1시간 동안 유효합니다. 만약 갱신 토큰을 사용하여 새 토큰을 받으세요.

이 명령어는 액세스 토큰 1과 비슷하지만 grant_type

  1. 터미널을 열고 다음 curl 명령어로 대체합니다.

    1. oauth2-client-idoauth2-client-secret 계정의 OAuth2 클라이언트 ID와 클라이언트 보안 비밀번호를 Google Cloud 사용자 인증 정보
    2. refresh-token를 처음 액세스 권한을 받을 때 받은 코드로 대체 토큰입니다.
    curl -L -X POST 'https://www.googleapis.com/oauth2/v4/token?client_id=oauth2-client-id&client_secret=oauth2-client-secret&refresh_token=refresh-token&grant_type=refresh_token'
    
  2. Google OAuth가 새 액세스 토큰을 반환합니다.

    {
      "access_token": "new-access-token",
      "expires_in": 3599,
      "scope": "https://www.googleapis.com/auth/sdm.service",
      "token_type": "Bearer"
    }

문제 해결

Google OAuth에 대한 자세한 내용은 OAuth 2.0을 사용하여 Google에 액세스 API를 참고하세요.

갱신 토큰이 계속 만료됨

클라이언트 ID가 승인되지 않으면 7일 후에 갱신 토큰이 작동하지 않을 수 있습니다. 한 가지 가능한 원인일 수 있습니다 7일 토큰 만료는 상업용 제품과는 관련이 없습니다. 샌드박스 승인이 필요합니다. 서비스 또는 사용자 계정에서 OAuth를 가져와야 함 토큰 수명을 늘리기 위해 2.0 클라이언트 ID가 승인되고 프로덕션에 투입되었습니다. 자세한 내용은 갱신 토큰 만료를 참고하세요. 확인할 수 있습니다

액세스가 거부됨

Google Cloud에서 OAuth 동의 화면을 설정했고 사용자 유형외부인 경우 '액세스 거부됨'이라는 메시지가 표시됩니다. 오류가 발생하는 경우 테스트 사용자로 등록되지 않은 Google 계정과 계정 연결을 시도함 할 수 있습니다. 테스트 사용자 섹션에 Google 계정을 추가해야 합니다. (OAuth 동의 화면)

파트너 연결 관리자 (PCM) 오류

액세스 시 발생한 오류 관련 지원 PCM은 파트너 연결 관리자 (PCM) 오류 참조

Google에서 확인하지 않은 앱입니다.

SDM API는 제한된 범위를 사용합니다. 즉, 승인 중에 이 범위를 사용하는 앱은 '확인되지 않음'으로 표시됩니다. 만일 OAuth API 인증이 완료되었습니다. 사용 시 Device Access OAuth API 인증이 필요하지 않습니다.

'Google에서 확인하지 않은 앱입니다.'라는 메시지가 표시될 수 있습니다. 인증 중 화면 프로세스 - sdm.service 범위가 다음에서 구성되지 않은 경우 Google Cloud의 OAuth 동의 화면. 이 화면은 고급 옵션을 클릭한 후 프로젝트로 이동을 클릭하여 우회할 수 있습니다. 이름 (안전하지 않음).

인증되지 않은 앱 보기 화면 를 참조하세요.

잘못된 클라이언트

액세스 또는 갱신 토큰을 가져오려고 하면 '잘못된 '클라이언트'의 약자입니다. 잘못된 OAuth 2.0 클라이언트 보안 비밀번호를 제공하면 오류가 발생합니다. 먼저 액세스 및 갱신 토큰 호출에서 사용 중인 client_secret 값이 사용 중인 OAuth 2.0 클라이언트 ID를 확인할 수 있습니다. Google 클라우드 사용자 인증 정보 있습니다.

잘못된 요청, 필수 범위 누락

PCM에서 권한을 부여한 후 다음과 같은 문제가 발생할 수 있습니다. '잘못된 요청' '필수 매개변수 누락: 범위' 오류 먼저 승인 호출에 사용하는 scope 값이 OAuth 2.0 클라이언트에 설정한 값과 동일합니다. Google Cloud의 사용자 인증 정보 있습니다.

리디렉션 URI 불일치

승인을 진행할 때 '리디렉션 URI 불일치'가 발생할 수 있습니다. 오류가 발생했습니다. 승인 호출에 사용하는 redirect_uri 값이 OAuth 2.0 클라이언트에 대해 설정한 것과 동일 Google 클라우드 사용자 인증 정보 있습니다.

계정 권한 수정

프로젝트에 부여된 권한을 수정하거나 Device Access 연결 해제하세요. 완전히 하려면 PCM으로 이동합니다.

https://nestservices.google.com/partnerconnections

이 페이지에는 모든 서드 파티 개발자 서비스 (Device Access 프로젝트)가 표시됩니다. 연결할 수 있습니다. 원하는 Device Access 프로젝트를 선택합니다. 있습니다. 다음 화면에서 원하는 대로 권한을 수정합니다.

승인된 서비스의 특정 권한만 취소하려면 권한을 삭제하고 뒤로 화살표를 클릭하여 저장합니다.

승인된 서비스를 완전히 연결 해제하려면 Google 계정 연결 해제를 클릭하고 계정: 프로젝트가 보유한 모든 권한과 액세스 토큰을 취소합니다. 해야 합니다.

PCM에 원하는 서비스가 표시되지 않으면 먼저 기기 목록을 호출합니다.

빠른 참조

이 참조를 사용하여 user Google 계정 연결 에서 자세한 내용을 확인하실 수 있습니다.

이 빠른 참조를 사용하려면 코드 샘플에서 각 자리표시자 변수를 수정하세요. 을 특정 통합의 값으로 변경하고 필요에 따라 복사하여 붙여넣습니다.

PCM 1개

웹에서 다음 링크 열기 브라우저, 다음과 같이 바꿉니다.

  1. Device Access Project ID로 project-id
  2. oauth2-client-idGoogle 클라우드 사용자 인증 정보
https://nestservices.google.com/partnerconnections/project-id/auth?redirect_uri=https://www.google.com&access_type=offline&prompt=consent&client_id=oauth2-client-id&response_type=code&scope=https://www.googleapis.com/auth/sdm.service

인증 코드 2개

다음으로 리디렉션됩니다. https://www.google.com. 승인 코드는 URL에서 code 매개변수로 반환됩니다. 다음과 같은 형식이어야 합니다.

https://www.google.com?code=authorization-code&scope=https://www.googleapis.com/auth/sdm.service

액세스 토큰 3개

인증 코드를 사용하여 액세스 토큰을 검색합니다. SDM API를 호출하는 데 사용할 수 있습니다

터미널을 열고 다음을 실행합니다. 다음 curl 명령어로 대체합니다.

  1. oauth2-client-idoauth2-client-secret 계정의 OAuth2 클라이언트 ID와 클라이언트 보안 비밀번호를 Google Cloud 사용자 인증 정보
  2. authorization-code를 이전 단계에서 받은 코드로 바꿉니다.

Google OAuth는 두 개의 토큰, 즉 액세스 토큰과 갱신 토큰을 사용할 수 있습니다.

요청

curl -L -X POST 'https://www.googleapis.com/oauth2/v4/token?client_id=oauth2-client-id&client_secret=oauth2-client-secret&code=authorization-code&grant_type=authorization_code&redirect_uri=https://www.google.com'

응답

{
  "access_token": "access-token",
  "expires_in": 3599,
  "refresh_token": "refresh-token",
  "scope": "https://www.googleapis.com/auth/sdm.service",
  "token_type": "Bearer"
}

4 API 호출

다음을 수행할 때까지 승인이 완료되지 않습니다. 첫 번째 devices.list 드림 새 액세스 토큰으로 호출합니다. 이 초기 호출은 승인 프로세스를 완료하고 이미 Pub/Sub 구독을 설정한 것입니다

다음 중 하나를 반드시 사용해야 합니다. 지정된 범위에 대해 나열된 API 호출을 통해 승인을 완료합니다.

sdm.service

기기

자세한 내용은 devices.list 드림 API 참조를 확인하세요.

curl -X GET 'https://smartdevicemanagement.googleapis.com/v1/enterprises/project-id/devices' \
    -H 'Content-Type: application/json' \
    -H 'Authorization: Bearer access-token'

5 갱신 토큰

SDM API용 액세스 토큰은 Google OAuth에서 반환된 expires_in 매개변수에 명시된 대로 1시간 동안 유효합니다. 만약 갱신 토큰을 사용하여 새 토큰을 받으세요.

터미널을 열고 다음을 실행합니다. 다음 curl 명령어로 대체합니다.

  1. oauth2-client-idoauth2-client-secret 계정의 OAuth2 클라이언트 ID와 클라이언트 보안 비밀번호를 Google Cloud 사용자 인증 정보
  2. refresh-token를 처음 액세스 권한을 받을 때 받은 코드로 대체 토큰입니다.

Google OAuth가 새 액세스 토큰을 반환합니다.

요청

curl -L -X POST 'https://www.googleapis.com/oauth2/v4/token?client_id=oauth2-client-id&client_secret=oauth2-client-secret&refresh_token=refresh-token&grant_type=refresh_token'

응답

{
  "access_token": "new-access-token",
  "expires_in": 3599,
  "scope": "https://www.googleapis.com/auth/sdm.service",
  "token_type": "Bearer"
}