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 フローを使用します。
- お客様が Google Nest デバイスの管理を a user 許可 a developer する場合は、 developer がuser を PCM に送信します。PCM で userが 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 |
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/partnerconnections
user がログインすると、このページには、リンクされているすべての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 アカウントの認証を解除する方法はいくつかあります。推奨される方法は、ユーザーが Partner Connections Manager(PCM)を使用してアカウントの権限を変更することです。詳細については、アカウントの権限を変更するをご覧ください。アクセス トークンは、次の方法で取り消すこともできます。
ユーザーは https://myaccount.google.com/permissions で権限を取り消すことができます。
デベロッパーは、アクセス トークンをエンドポイント
https://oauth2.googleapis.com/revoke
に渡すことができます。Google OAuth とトークンの取り消しの詳細については、トークンの取り消しをご覧ください。
埋め込みウェブビュー
新しい安全なブラウザに関するポリシーでは、埋め込みブラウザ ライブラリ(一般に埋め込み WebView と呼ばれるもの)での Google OAuth リクエストが禁止されます。埋め込まれたすべてのウェブビューがブロックされます。埋め込みの WebView ライブラリは、悪意のあるデベロッパーが Google とユーザー間の通信を傍受して変更できるため、問題があります。埋め込み WebView は、アカウントのセキュリティに影響するだけでなく、アプリのユーザビリティにも影響する可能性があります。
このポリシーの影響を受ける場合は、埋め込み WebView での Google の OAuth 2.0 認可エンドポイントに関する今後のセキュリティ変更のサポート記事を参照してください。