App Identity API untuk layanan paket lama

ID region

REGION_ID adalah kode singkat yang ditetapkan Google berdasarkan region yang Anda pilih saat membuat aplikasi. Kode ini tidak sesuai dengan negara atau provinsi, meskipun beberapa ID region mungkin tampak mirip dengan kode negara dan provinsi yang umum digunakan. Untuk aplikasi yang dibuat setelah Februari 2020, REGION_ID.r disertakan dalam URL App Engine. Untuk aplikasi lama yang dibuat sebelum tanggal tersebut, ID region bersifat opsional dalam URL.

Pelajari ID region lebih lanjut.

App Identity API memungkinkan aplikasi menemukan ID aplikasinya (juga disebut ID project). Dengan menggunakan ID ini, aplikasi App Engine dapat menegaskan identitasnya ke Aplikasi App Engine lainnya, Google API, serta aplikasi dan layanan pihak ketiga. ID aplikasi juga dapat digunakan untuk membuat URL atau alamat email, atau untuk membuat keputusan run-time.

Mendapatkan project ID

Project ID dapat ditemukan menggunakan metode AppIdentityService::getApplicationId().

Mendapatkan nama host aplikasi

Secara default, aplikasi App Engine disalurkan dari URL dalam bentuk https://PROJECT_ID.REGION_ID.r.appspot.com, dengan ID project merupakan bagian dari nama host. Jika aplikasi disalurkan dari domain kustom, aplikasi tersebut mungkin perlu mengambil seluruh komponen nama host. Anda dapat melakukannya menggunakan metode AppIdentityService::getDefaultVersionHostname().

Menyatakan identitas ke aplikasi App Engine lainnya

Jika ingin menentukan identitas aplikasi App Engine yang membuat permintaan ke aplikasi App Engine Anda, Anda dapat menggunakan header permintaan X-Appengine-Inbound-Appid. Header ini ditambahkan ke permintaan oleh layanan URLFetch dan tidak dapat diubah oleh pengguna, sehingga dengn aman menunjukkan project ID aplikasi yang melakukan permintaan, jika ada.

Persyaratan:

  • Hanya panggilan yang dilakukan ke domain appspot.com aplikasi Anda yang akan berisi header X-Appengine-Inbound-Appid. Panggilan ke domain kustom tidak berisi header.
  • Permintaan Anda harus ditetapkan agar tidak mengikuti pengalihan.

Di pengendali aplikasi, Anda dapat memeriksa ID masuk dengan membaca header X-Appengine-Inbound-Appid dan membandingkannya dengan daftar ID yang diizinkan untuk membuat permintaan.

Menyatakan identitas ke Google API

Google API menggunakan protokol OAuth 2.0 untuk autentikasi dan otorisasi. App Identity API dapat membuat token OAuth yang dapat digunakan untuk menyatakan bahwa sumber permintaan adalah aplikasi itu sendiri. Metode getAccessToken() menampilkan token akses untuk suatu cakupan, atau daftar cakupan. Token ini kemudian dapat ditetapkan dalam header HTTP panggilan untuk mengidentifikasi aplikasi panggilan.

Contoh berikut menunjukkan cara menggunakan App Identity API untuk mengambil kontak Google Kalender menggunakan OAuth.
// Retrieves Google Calendar contacts using OAuth

use google\appengine\api\app_identity\AppIdentityService;

function setAuthHeader() {
  $access_token = AppIdentityService::getAccessToken('https://www.google.com/m8/feeds');
  return [sprintf('Authorization: OAuth %s', $access_token['access_token'])];
}

$get_contacts_url = 'https://www.google.com/m8/feeds/contacts/default/full';
$headers = setAuthHeader();
$opts = [
  'http' => [
    'header' => implode("\r\n", $headers),
  ],
];

$context = stream_context_create($opts);

$response = file_get_contents($get_contacts_url, false, $context);

$xml = simplexml_load_string($response);

$email = $xml->author->email;
$service_account = AppIdentityService::getServiceAccountName();

if (strcmp($email, $service_account) != 0) {
  die(sprintf('%s does not match the service account name %s.',
              $email,
              $service_account));
}

Perlu diperhatikan bahwa identitas aplikasi direpresentasikan oleh nama akun layanan, yang biasanya adalah applicationid@appspot.gserviceaccount.com. Anda bisa mendapatkan nilai yang tepat dengan menggunakan metode getServiceAccountName(). Untuk layanan yang menawarkan ACL, Anda dapat memberikan akses aplikasi dengan memberikan akses akun ini.

Menyatakan identitas ke layanan pihak ketiga

Token yang dibuat oleh getAccessToken() hanya berfungsi pada layanan Google. Namun, Anda bisa menggunakan teknologi penandatanganan yang mendasarinya untuk menegaskan identitas aplikasi Anda ke layanan lain. Metode signForApp() akan menandatangani byte menggunakan kunci pribadi yang unik untuk aplikasi Anda, dan metode getPublicCertificates() akan menampilkan sertifikat yang dapat digunakan untuk memvalidasi tanda tangan.

Mendapatkan nama Bucket Cloud Storage default

Setiap aplikasi dapat memiliki satu bucket Cloud Storage default, yang mencakup penyimpanan gratis 5 GB dan kuota gratis untuk operasi I/O.

Untuk mendapatkan nama bucket default, panggil CloudStorageTools::getDefaultGoogleStorageBucketName. Atau, Anda juga bisa menggunakan nilai #default# sebagai nama bucket, dan #default# akan otomatis diganti pada saat runtime dengan nama bucket default aplikasi.