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 ID project
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 headerX-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.
// 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 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.