0

Google のサービス アカウント認証を使用してサーバー アプリを認証しようとしていますが、何らかの理由でプッシュ スルーしません。

API コンソールで、プロジェクトを作成し、必要なサービス (Admin SDK) を有効にし、サービス アカウントと Web アプリケーション API アクセスを作成しました。

Web アプリケーションのアクセス資格情報を使用すると、ユーザー レコードを認証して取得できます。しかし、サービス アカウント認証を使用すると、ログインが必要なメッセージが表示され続けます。

"error": { "errors": [ { "domain": "global", "reason": "required", "message": "Login Required", "locationType": "header", "location": "Authorization" } ], "code": 401, "message": "Login Required" }

追加するのを忘れていましたが、これを PHP クライアント ライブラリでテストしています。

public function init() {
  $client = new Google_Client();

  if (isset($_SESSION['access_token'])) {
    $client->setAccessToken($_SESSION['access_token']);
  }

  $key = file_get_contents(App::SERVICE_KEY_FILE);
  $client->setAssertionCredentials(new Google_AssertionCredentials(
      App::SERVICE_ACCOUNT_NAME,
      App::SERVICE_API_SCOPES,
      $key)
  );

  $client->setClientId(App::SERVICE_CLIENT_ID);
  debug($client, 'CLIENT');

  if ($client->getAccessToken()) {
    $this->access_token = $_SESSION['access_token'] = $client->getAccessToken();
    debug($_SESSION['access_token'], 'TOKEN');
  } else {
    debug('NO TOKEN');
  }
  $this->client = $client;
}

ご覧のとおり、コードは基本的に Google の例とほぼ同じです。余分な手順がありませんか?

最後に、Web アプリを使用して認証し、サービス アカウント スクリプトにアクセスすると、サービス アカウント スクリプトは Web アプリ スクリプトのセッションを取得し、ユーザー レコードの取得をプッシュ スルーできます。これは、Admin SDK API が Web アプリ認証によるユーザー操作を明示的に必要とするということですか?

4

1 に答える 1