1

サーバー間認証を使用して Google Directory API を呼び出そうとすると、「このリソース/API にアクセスする権限がありません」というエラー メッセージが表示されます。

私がしたこと:

  1. Google Developers Console でアプリを作成しました。
  2. 秘密鍵をダウンロードし、サービス アカウント名を検索しました。
  3. API で Admin SDK を有効にしました。
  4. google-api-php-client をダウンロードしました。
  5. 次のコードを書きました。

$serviceAccountName = 'XXXXXXXXXXX@developer.gserviceaccount.com';
$scopes = 'https://www.googleapis.com/auth/admin.directory.group';
$privateKeyFile = dirname(__FILE__).'/../certs/googleapi-privatekey.p12';

$client = new Google_Client();
$client->setApplicationName('API Project');
$client->setScopes($scopes);
$cred = new Google_Auth_AssertionCredentials($serviceAccountName, $scopes, file_get_contents($privateKeyFile));
$client->setAssertionCredentials($cred);
$client->getAuth()->refreshTokenWithAssertion();

$req = new Google_Http_Request("https://www.googleapis.com/admin/directory/v1/groups/group-id@example.com/members?maxResults=1000");

$val = $client->getAuth()->authenticatedRequest($req);

var_dump($client->getAuth()->getAccessToken());
var_dump($val->getResponseBody());
  1. この小さなスクリプトを実行すると、1 時間有効な有効なアクセス トークンが生成され、次のエラー メッセージが表示されます。

{ "error": { "errors": [ { "domain": "global", "reason": "forbidden", "message": "Not Authorized to access this resource/api" } ], "code": 403 , "メッセージ": "このリソース/API にアクセスする権限がありません" } }

PHP スクリプトのアクセス キーを使用して Google OAuth プレイグラウンドで同じリクエストを実行しようとすると、同じエラーが発生します。開発者コンソールのどこかで、そのサービス アカウントのグループ データへのアクセスを有効にする必要がありますか?

4

2 に答える 2