Developerは SDM API を使用して、 userの代わりに Google Nest デバイスを表示、管理できます。SDM API は、 user がアクセスされるデバイスを管理していること、 user が各デバイスの特性のdeveloper 読み取りまたは書き込みに同意していること、developer が各特性へのアクセスに対してホワイトリストに登録されていることを検証します。
デバイス管理に SDM API を使用するには、まずdeveloper が userによって承認される必要があります。
承認プロセスのチュートリアルについては、 Device Access クイック スタートガイドのアカウントを承認するページをご覧ください。
認証エラーのトラブルシューティングについては、認証エラーをご覧ください。
OAuth フロー
SDM API は、user 認証に 3 レッグの Google OAuth フローを使用します。
- a user が Nest デバイスの管理を承認する場合、 developer は PCM にuser を送信します。PCM では、 userが Google アカウントにログインします。 a developer
- 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/authURL で次のパラメータを使用します。
| パラメータ | 説明 |
|---|---|
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 クライアントがリクエストとコールバック間の状態を維持するために使用する不透明な値。 |
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 を追加する
アプリで、次の URL を使用して PCM ビューを追加します。
https://nestservices.google.com/partnerconnectionsuser がログインすると、このページには、リンクされているすべてのDevice Access developerと、権限の付与と取り消しを切り替えるためのトグルを含むすべての構造とデバイスのリストが表示されます。また、このページからパートナーごとにパートナー接続を解除することもできます。 user
未確認アプリ
SDM API は制限付きスコープを使用します。つまり、認可時にこのスコープを使用するアプリは、OAuth API の確認が完了していない限り「未確認」になります。個人使用で Device Access を使用する場合、OAuth API の確認は必要ありません。
認証プロセス中に「Google はこのアプリを確認していません」という画面が表示されることがあります。これは、Google Cloud の OAuth 同意画面で sdm.service スコープが構成されていない場合に表示されます。この画面は、[詳細設定] オプションをクリックしてから、[プロジェクト名(安全ではないページ)に移動] をクリックするとバイパスできます。
詳しくは、未確認アプリの画面をご覧ください。
アクセス トークン
承認済みの構造とデバイスを管理する SDM API へのすべての呼び出しでは、承認時にuser によって developer に付与された一意のアクセス トークンを使用する必要があります。アクセス トークンの有効期間は短いため、継続的なアクセスを確保するには定期的に更新する必要があります。
a user が後で構造またはデバイスへの developer アクセスを取り消すと、アクセス トークンは直ちに期限切れになり、更新できなくなります。また、developer は、その userに代わって SDM API を呼び出すことができなくなります。
アカウントの承認を取り消す
Google アカウントの認証を解除する方法は複数あります。アカウント権限を変更するには、ユーザーがパートナー コネクション マネージャー(PCM)を使用することをおすすめします。詳細については、アカウントの権限を変更するをご覧ください。アクセス トークンは、次の方法でも取り消すことができます。
ユーザーは https://myaccount.google.com/permissions で取り消すことができます。
デベロッパーはアクセス トークンをエンドポイント
https://oauth2.googleapis.com/revokeに渡すことができます。Google OAuth とトークンの取り消しについて詳しくは、トークンの取り消しをご覧ください。
埋め込みウェブビュー
新しい安全なブラウザに関するポリシーでは、埋め込みブラウザ ライブラリ(一般に埋め込み WebView と呼ばれる)での Google OAuth リクエストが禁止されます。埋め込みウェブビューはすべてブロックされます。埋め込み WebView ライブラリは、悪意のあるデベロッパーが Google とユーザー間の通信を傍受して変更できるため、問題があります。埋め込み WebView はアカウントのセキュリティに影響するだけでなく、アプリのユーザビリティにも影響する可能性があります。
このポリシーの影響を受ける場合は、埋め込みの WebView における Google の OAuth 2.0 認可エンドポイントのセキュリティ変更に関するサポート記事をご参照ください。