これは、Google Directory APIがshowDeleted = trueのuser_listに対して403を返すことに関連している可能性がありますが、残念ながらまだコメントできず、提供する回答がありません。
学校のGSuiteから許可を得てサービスアカウントを受け取りました
https://www.googleapis.com/auth/admin.directory.user.readonly
G Suite管理者は、ドメイン全体の権限をアカウントに委任していることを示しました。サービスアカウントJWTを作成し、HTTP / RESTフローを使用してAPIを呼び出すためのアクセストークンを取得できます。ただし、ユーザーgetエンドポイントを呼び出すと、アカウントに関する情報を要求します-
https://www.googleapis.com/admin/directory/v1/users/redacted%40redacted.com?projection=full
私は以下を受け取ります:
The remote server returned an error: (403) Forbidden.
{
"error": {
"errors": [
{
"domain": "global",
"reason": "forbidden",
"message": "Not Authorized to access this resource/api"
}
],
"code": 403,
"message": "Not Authorized to access this resource/api"
}
}
私は彼らのGSuite管理パネルにアクセスできないので、自分自身をいじくり回すことはできませんが、管理者は、クライアントがadmin.directory.user.readonly権限にアクセスできることを確認しました。上記のように、ドメイン全体にアクセスできる役割で。管理者が割り当てられた権限を失っている可能性がある場所、または私のアプローチで欠けている可能性がある場所についての提案を受け入れています(ただし、JWTビルド/署名およびアクセストークンの取得は期待どおりに機能しているようです)。私が提供できる他の有用な情報があれば、私に知らせてください、そして私は更新します。
更新:アカウントの権限は正しいようです-ユーザーから情報を取得したり、APIエクスプローラーで取得したりできました。ただし、APIExplorerはURLを使用しています
https://www.googleapis.com/admin/directory/v1/users/redacted%40redacted.com?projection=full&key={YOUR_API_KEY}
また、サービスアカウントまたはusers / getドキュメントのいずれにも、キーパラメータに関するドキュメントが見つかりません。仕様で定義されているように、認証ヘッダーにベアラートークンとしてaccess_tokenを含めていますが、キークエリ文字列パラメーターとして送信しようとすると、上記と同じ403エラーが発生します。Stackにも同様の質問があります(Google APIクライアントusers()。get(userKey ='[email protected] ')は、このリソース/ apiへのアクセスが許可されていません)を返しますが、回答はありません。
Admin SDKをいじったことはありませんが、サービスアカウントの使用に重点を置いているため、Perform G Suite Domain-Wide Delegation ofAuthorityを確認することをお勧めします。
ドメイン全体の権限をサービスアカウントに委任します
作成したサービスアカウントには、アクセスするGSuiteドメインのユーザーデータへのアクセスを許可する必要があります。G Suiteドメインの管理者は、次のタスクを実行する必要があります。
- GSuiteドメインの管理コンソールに移動します。
- コントロールのリストから[セキュリティ]を選択します。[セキュリティ]が表示されない場合は、ページ下部の灰色のバーから[その他のコントロール]を選択し、コントロールのリストから[セキュリティ]を選択します。
- オプションのリストから[詳細設定]を選択します。
- [認証]セクションで[APIクライアントアクセスの管理]を選択します。
- [クライアント名]フィールドに、サービスアカウントのクライアントIDを入力します。
- [1つ以上のAPIスコープ]フィールドに、アプリケーションにアクセスを許可する必要があるスコープのリストを入力します(下の画像を参照)。たとえば、ユーザーとグループへのドメイン全体のアクセスが必要な場合は、次のように入力します。
https://www.googleapis.com/auth/admin.directory.user, https://www.googleapis.com/auth/admin.directory.group
- [承認]ボタンをクリックします。
これで、サービスアカウントは、ドメインのすべてのユーザーがGoogle Admin SDK DirectoryAPIにドメイン全体でアクセスできるようになりました。これで、GSuiteドメインのユーザーに代わって承認されたAdminSDKDirectoryサービスオブジェクトをインスタンス化する準備が整いました。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加