【发布时间】:2022-11-08 22:21:00
【问题描述】:
我正在尝试使用服务帐户在项目上创建服务帐户,但我无法让它工作。现在,我只是简单地尝试使用许可的服务帐户列出项目中的所有服务帐户,但它返回 401 错误。这甚至可能与服务帐户有关吗?
$sa = new ServiceAccountCredentials([
'iam.serviceAccounts.list'
], base_path() . '/credentials.json');
$middleware = new AuthTokenMiddleware($sa);
$stack = HandlerStack::create();
$stack->push($middleware);
// create the HTTP client
$client = new Client([
'handler' => $stack,
'base_uri' => 'https://iam.googleapis.com',
'auth' => 'google_auth' // authorize all requests
]);
$response = $client->get('v1/projects/project-id-1/serviceAccounts');
var_dump((String) $response->getBody());
回复:
{
"error": {
"code": 401,
"message": "Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.",
"status": "UNAUTHENTICATED"
}
}
编辑: 我的包裹:
"google/auth": "^1.19",
"guzzlehttp/guzzle": "^7.0.1"
【问题讨论】:
-
您可以使用服务帐户来创建资源(例如,创建其他服务帐户),并且类似于您能够从控制台执行的操作,服务帐户应该经过身份验证,并且应该具有足够的权限。您能否查看并遵循Authenticating as a service account 中描述的步骤,并获得足够的权限,查看并遵循Creating and managing service accounts - Required roles。
标签: php google-cloud-platform google-oauth google-api-php-client