Saya menghadapi masalah ketika saya tidak dapat membuat Token Akses untuk Akun Layanan Google IAM menggunakan metode. Saya mendapatkan token akses OAuth2 pribadi saya menggunakan: gcloud auth application-default print-access-token

Saya memiliki semua peran yang diperlukan (roles/iam.serviceAccountTokenCreator) tetapi ketika saya meng-cURL API, saya selalu mendapatkan respons kesalahan:

{
  "error": {
    "code": 400,
    "message": "Request contains an invalid argument.",
    "status": "INVALID_ARGUMENT"
  }
}

Seperti inilah tampilan permintaan ikal penuh:

curl -X POST --header 'Content-Type: application/json' --header 'authorization: Bearer ya29.AASDSADASDASDi9C1yAXXXXXXZzLtDDrCAzblqF_qi5sKvMZcHieBADASDASDTNJiOKrqJBffb4Moh3gTgiTbDgMIF1XDQU5JZ31aACs0aUbI4wgeqV2Q' https://iamcredentials.googleapis.com/v1/projects/<PROJECT_NAME>/serviceAccounts/<SA_NAME>@<PROJECT_NAME>.iam.gserviceaccount.com:generateAccessToken -d '{"scope": ["https://www.googleapis.com/auth/cloud-platform"]}'

Terima kasih

1
Milan Ilic 11 Desember 2019, 16:30

1 menjawab

Jawaban Terbaik

Anda memiliki dua masalah dalam panggilan API Anda.

  1. Nama Akun Layanan adalah parameter jalur dan harus berupa URL yang disandikan. Karakter @ tidak valid. Gunakan %40 sebagai gantinya (sebagai contoh pengkodean yang benar).
  2. URI menentukan PROJECT_NAME. Ini tidak benar. Anda perlu menggunakan - (karakter tanda hubung/tanda hubung). Contoh projects/-/serviceAccounts.

Anda juga harus memiliki izin iam.serviceAccounts.getAccessToken yang dilampirkan ke salah satu peran yang ditetapkan ke akun yang membuat permintaan yang digunakan Token Akses dalam permintaan API ini. Ini akan menyebabkan kesalahan yang berbeda jika salah. Hanya tip saat Anda sampai ke langkah berikutnya.

2
John Hanley 12 Desember 2019, 02:01