Google Cloud と Device Access プロジェクトを作成すると、 サポートされている Google Nest デバイスで Google アカウントを SDM API
アカウントをリンクする
ストラクチャやデバイスを表示するには、Google アカウントを Device Access PCM を使用するプロジェクト。 PCM を使用すると、 user 以下に対する権限を付与できます。 ストラクチャとデバイスデータにアクセスできます。 developer
このガイドでは、 user と developerの両方として機能します。
ウェブで次のリンクを開く 次のように置き換えます。
- project-id は Device Access Project ID に置き換えます
- oauth2-client-id は、取得した OAuth2 クライアント ID に置き換えます。 Google Cloud クルデンシャル
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 - 最近複数のアカウントで Google にログインした場合、 最初の [アカウントの選択] 画面に、 Google アカウント。その場合、デバイスに関連付けられている Google アカウントを選択します。 Device Accessの承認が必要です。
- [Google Nest の権限] 画面は PCM そのものです。 ここで、ストラクチャとデバイスの権限を付与できます。[ 権限(ステップ 1)と、その家にあるすべてのデバイスに (ステップ 2)で [次へ] をクリックします。
- [プロジェクト名に移動するアカウントを選択] 画面で、次の操作を行います。 [Project Name] は、Google Cloud プロジェクトの名前です。[Project Name] を選択します。 認証する Google アカウント SDM API以前と同じ Google アカウントを使用します。
- アカウントを選択した後、 このアプリは Google によって確認されていません。続行するには、 [Advanced] オプションを選択してから、[Go to Project Name (unsafe)] をクリックします。詳しくは、 このアプリは Google によって確認されていません。詳細については、 情報です。
- [プロジェクト名の権限を付与] 画面で、[許可] をクリックして Google アカウントへのアクセスを許可します。
- [選択内容の確認] 画面で、必要な権限を確認します。 チェックボックスをオンにして、[許可] をクリックして確定します。
以下のページにリダイレクトされます https://www.google.com.認証コードは URL の
code
パラメータとして返されます。 次の形式にする必要があります。https://www.google.com?code=authorization-code&
scope=https://www.googleapis.com/auth/sdm.service - 認証コードをコピーします。
アクセス トークンを取得する
認証コードを使用してアクセス トークンを取得し、 SDM API の呼び出しに使用できます
ターミナルを開いて次のコマンドを実行します。 次の
curl
コマンドを使用します。- oauth2-client-id および oauth2-client-secret 取得した OAuth2 クライアント ID とクライアント シークレットに置き換えます。 Google Cloud クルデンシャル
- 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' Google OAuth は、アクセス トークンと あります。
両方の値をコピーします。アクセス トークンを使用して、 更新トークンを使用して、新しい 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 時間有効です。条件
アクセス トークンが期限切れになった場合は、更新トークンを使用して新しいトークンを取得してください。
このコマンドはアクセス トークンのコマンドと類似していますが、別の
grant_type
。
ターミナルを開いて
curl
コマンドを次のように置き換えます。- oauth2-client-id および oauth2-client-secret 取得した OAuth2 クライアント ID とクライアント シークレットに置き換えます。 Google Cloud クルデンシャル
- 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' Google OAuth は新しいアクセス トークンを返します。
{
トラブルシューティング
Google OAuth の詳細については、OAuth 2.0 を使用した Google へのアクセス API。
更新トークンがいつまでも期限切れになる
クライアント ID が承認されなかった場合、更新トークンは 7 日後に機能しなくなることがあります。 考えられる原因の一つです7 日間のトークンの有効期限は、商用サービスには関係ありません。 またはサンドボックスの承認が必要ですサービスまたはユーザー アカウントが OAuth 2.0 を取得する必要があります トークンの有効期間を長くするため、2.0 のクライアント ID が承認され本番環境に移行されます。 詳細については、更新トークンの有効期限をご覧ください。 情報です。
アクセスが拒否されました
Google Cloud で OAuth 同意画面を設定していて、 [User type] が [External] の場合は、[Access denied] と表示されます。エラー テストユーザーとして登録されていない Google アカウントにリンクしようとした 提供しますGoogle アカウントを [テストユーザー] セクションに追加する OAuth 同意画面。
パートナー コネクション マネージャー(PCM)エラー
アクセス時に発生したエラーに関するヘルプ PCM については、以下をご覧ください。 パートナー コネクション マネージャー(PCM) エラー リファレンスをご覧ください。
このアプリはまだ確認されていません
SDM API は制限付きのスコープを使用します。つまり、 承認時にこのスコープを使用するアプリは「未確認」になりますただし、 OAuth API の確認が完了していること。用途 Device Access 個人使用の場合、OAuth API の確認は不要です。
「Google はこのアプリを確認していません」というメッセージが表示されることがあります。承認プロセス中に画面が表示され
sdm.service
スコープが構成されていない場合に表示されます。
Google Cloud の OAuth 同意画面。この画面は
[詳細設定] オプションをクリックし、[[プロジェクト] ] をクリックして
Name(安全でない)。
未確認のアプリをご覧ください。 画面 をご覧ください。
クライアントが無効です
アクセス トークンや更新トークンを取得しようとすると、「無効」というメッセージが
クライアント誤った OAuth 2.0 クライアント シークレットを指定した場合、このエラーが発生します。必ず、
アクセス トークンと更新トークンの呼び出しで使用している client_secret
値が、
OAuth 2.0 クライアント ID を入力します。
Google Cloud
クルデンシャル
できます。
無効なリクエストです。必要なスコープがありません
PCM で権限を付与した後、
「無効なリクエストです」「Missing required parameter: scope」というエラーが表示されます。必ず、
認証呼び出しで使用している scope
の値は、OAuth 2.0 クライアントで設定した値と同じです。
Google Cloud
クルデンシャル
できます。
リダイレクト URI の不一致
承認時に「リダイレクト URI の不一致」が発生する可能性があります。
エラーが発生します。認証呼び出しで使用している redirect_uri
の値が次のことを確認します。
OAuth 2.0 クライアントに設定したものと同じ ID を設定します。
Google Cloud
クルデンシャル
できます。
アカウントの権限を変更する
プロジェクトに付与されている権限の変更、 Device Access プロジェクトの接続解除 PCM に移動します。
https://nestservices.google.com/partnerconnections
このページには、すべてのサードパーティ デベロッパー サービス(Device Access プロジェクト)が表示されます 関連付けられていますプロジェクトを選択する Device Access あります。次の画面で、必要に応じて権限を変更します。
承認済みサービスの特定の権限のみを取り消すには、 削除する権限を選択し、戻る矢印をクリックして保存します。
承認済みサービスの接続を完全に解除するには、[Google アカウントと Account で、プロジェクトに付与されているすべての権限とアクセス トークンを取り消す 付与されていることがわかります。
PCM に目的のサービスが表示されない場合は、次の操作を行ってください。 まずデバイスリスト呼び出しを行います。
クイック リファレンス
このリファレンスを使用して、認証する手順をすばやく実装できます。 user して、Google アカウントをリンクします をタップします。
このクイック リファレンスを使用するには、コードサンプルの各プレースホルダ変数を編集してください 値を追加し、必要に応じてコピーして貼り付けます。
1 PCM
ウェブで次のリンクを開く 次のように置き換えます。
- project-id は Device Access Project ID に置き換えます
- oauth2-client-id は、取得した OAuth2 クライアント ID に置き換えます。 Google Cloud クルデンシャル
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
コマンドを使用します。
- oauth2-client-id および oauth2-client-secret 取得した OAuth2 クライアント ID とクライアント シークレットに置き換えます。 Google Cloud クルデンシャル
- 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
コマンドを次のように置き換えます。
- oauth2-client-id および oauth2-client-secret 取得した OAuth2 クライアント ID とクライアント シークレットに置き換えます。 Google Cloud クルデンシャル
- 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" }