認証

Developerは、SDM API を使用して userに代わって Google Nest デバイスを表示および管理できます。SDM API は、 user アクセス対象のデバイスを管理、 user 各デバイスのトレイトの読み取りと書き込みdeveloper に同意し、developer 各トレイトへのアクセスが許可リストに登録されていることを確認します。

デバイス管理に SDM API を使用するには、まずdeveloper が userによって承認されている必要があります。

承認プロセスの詳細については、 Device Access クイック スタートガイドのアカウントの承認をご覧ください。

認可エラーのトラブルシューティングについては、認可エラーをご覧ください。

OAuth フロー

SDM API は、user 承認に 3-legged Google OAuth フローを使用します。

  • Google Nest デバイスの管理を a user 承認したい a developer 場合は、 developer PCM にuser を送り、 userGoogle が Google アカウントにログインします。
  • user は、PCM で developerに付与する権限を選択します。
  • user は OAuth を介して同意を提供し、developer 認証コードを付与します。
  • developer は、認可コードを使用してアクセス トークンを取得します。
  • developer は、デバイス管理のために SDM API の呼び出しとともにアクセス トークンを使用します。

Google OAuth の詳細と設定方法については、OAuth 2.0 を使用した Google API へのアクセスをご覧ください。

パートナー コネクション マネージャー(PCM)

PCM は SDM API によって提供されます。このビューには、user が developerに付与できるすべての構造、デバイス、アクセス オプションがリストされます。 userは、承認プロセス中に何へのアクセス権を付与するかを選択し、そのアクセスを制御します。

PCM で選択されたオプションは、アクセス権が付与されるトレイトのコレクションであるトレイト グループにマッピングされます。 developer 一部のトレイト グループは、developer が userに提供する統合のタイプに応じてリンクされます。 userでは、その統合を有効にするためにリンクされたトレイト グループに権限を付与する必要があります。それ以外の場合、ユーザーは必要に応じて、リンクされていない個別のトレイト グループに付与できます。

PCM を有効にする

userの PCM ビューを有効にするには、標準の Google API OAuth 2.0 エンドポイントを、認証リクエスト用のこの新しい OAuth エンドポイントに置き換えます。

https://nestservices.google.com/partnerconnections/project-id/auth

これらのパラメータを URL で使用します。

パラメータ 説明
redirect_uri 認証が成功した後に user を転送する URI。
client_id Google Cloud プロジェクトの OAuth 2.0 クライアント ID。 Project ID に関連付けられているものと同じであることを確認します。 OAuth クライアント ID は projectに固有の有効なものであり、他の projectと共有できません。
access_type 使用する値: offline
prompt 使用する値: consent
response_type 使用する値: code
代わりに認証コードが必要です。
scope 使用する値: https://www.googleapis.com/auth/sdm.service
SDM API スコープ。
state 省略可。リクエストとコールバックの間で状態を維持するために developer クライアントが使用する不透明な値。
linking_token GetToken コマンドから取得したリンクトークン。

PCM URL の例:

https://nestservices.google.com/partnerconnections/
  2f6989ca-c756-4625-8cdc-d5b1edfb2dcd/auth?
  redirect_uri=https://www.example.com/api/link/M258KP8OWYZDVQ&
  client_id=418235700063-sdkiav89orn5r1nvrcr5t210qqjimq8l.apps.googleusercontent.com&
  access_type=offline&
  prompt=consent&
  response_type=code&
  scope=https://www.googleapis.com/auth/sdm.service

user に権限が付与されると、リダイレクト URI で code パラメータとして認証コードが返されます。このコードを使用してアクセス トークンを取得します。

PCM へのアクセス時に発生したエラーについては、パートナー コネクション マネージャー(PCM)のエラー リファレンスをご覧ください。

アプリに PCM を追加する

次の URL を使用して、アプリに PCM ビューを追加します。

https://nestservices.google.com/partnerconnections

user にログインすると、リンクされているすべてのDevice Access developerとともに、権限の付与と取り消しの切り替えがあるすべての構造とデバイスのリストが表示されます。 user から、パートナーごとに接続をこのページで解除することもできます。

未確認アプリ

SDM API では制限付きスコープが使用されます。つまり、認可時にこのスコープを使用するアプリは、「OAuth API の確認」が完了していない限り「未確認」になります。個人で使用する場合、 Device Access OAuth API による確認は必要ありません。

Google Cloud の OAuth 同意画面sdm.service スコープが構成されていない場合、承認プロセス中に「Google でこのアプリの確認が行われていません」という画面が表示されることがあります。この画面はバイパスできます。[詳細] オプションをクリックしてから [プロジェクト名に移動(安全でない)] をクリックします。

詳しくは、未確認アプリの画面をご覧ください。

アクセス トークン

認可済みの構造やデバイスを管理するために SDM API を呼び出す場合は、認可時にuser に付与された一意のアクセス トークンを使用する必要があります。 developer アクセス トークンは有効期間が短いため、アクセスを継続するために定期的に更新する必要があります。

後でストラクチャやデバイスへのアクセスを a user 取り消す developer と、アクセス トークンはすぐに期限切れになり、更新できなくなります。developer に代わって SDM API を呼び出すことはできなくなります user。

アカウントの承認を取り消す

Google アカウントの認証を解除する方法は複数あります。推奨される方法は、ユーザーがパートナー コネクション マネージャー(PCM)を使用してアカウントの権限を変更することです。詳しくは、アカウントの権限を変更するをご覧ください。アクセス トークンは、次の方法で取り消すこともできます。

  1. ユーザーは https://myaccount.google.com/permissions で取り消すことができます。

  2. デベロッパーは、アクセス トークンをエンドポイント https://oauth2.googleapis.com/revoke に渡すことができます。Google OAuth とトークンの取り消しの詳細については、トークンの取り消しをご覧ください。

埋め込み WebView

新しい安全なブラウザ ポリシーでは、埋め込みウェブビューと呼ばれる埋め込みブラウザ ライブラリへの Google OAuth リクエストを禁止しています。すべての埋め込み WebView がブロックされます。埋め込み WebView ライブラリの場合、悪意のあるデベロッパーが Google とユーザーの間の通信をインターセプトして改ざんできるという問題があります。埋め込み WebView は、アカウントのセキュリティだけでなく、アプリケーションのユーザビリティにも影響します。

このポリシーの影響を受ける場合、埋め込み WebView の Google の OAuth 2.0 認可エンドポイントに対する今後のセキュリティに関する変更のサポート記事をご覧ください。