الربط بخدمات Google Cloud

يمكنك استخدام طريقة ScriptApp.getIdentityToken() للحصول على رمز مميّز لهوية اتصال OpenID (رمز JSON المميّز للويب أو JWT) للمستخدم الفعلي. يمكنك استخدام هذا الرمز المميز للمصادقة مع خدمات Google Cloud، مثل Cloud Run، التي تم ضبطها لقبول هذا الرمز.

تفعيل نطاق openid

نطاق openid مطلوب لإنشاء رمز تعريف اتصال OpenID. يجب أيضًا إدراج أي نطاقات أخرى يستخدمها النص البرمجي، مثل https://www.googleapis.com/auth/script.external_request لخدمة UrlFetch. يتم تضمين النطاق https://www.googleapis.com/auth/userinfo.email في هذا المثال لإضافة عنوان البريد الإلكتروني للمستخدم إلى رمز التعريف.

في ملف البيان (appsscript.json) لمشروع النص البرمجي، أضِف النطاق openid وأي نطاقات أخرى مطلوبة إلى مصفوفة oauthScopes:

{
  "timeZone": "America/New_York",
  "dependencies": {
  },
  "exceptionLogging": "STACKDRIVER",
  "runtimeVersion": "V8",
  "oauthScopes": [
    "openid",
    "https://www.googleapis.com/auth/script.external_request",
    "https://www.googleapis.com/auth/userinfo.email"
  ]
}

إعداد خدمة Google Cloud

يجب ضبط خدمة Google Cloud لقبول رمز التعريف الذي تم إصداره للبرنامج النصي. يتضمّن ذلك عادةً إضافة معرّف عميل النص البرمجي كجمهور مسموح به.

للعثور على معرّف العميل الخاص بالنص البرمجي، يمكنك فك ترميز رمز مميّز للهوية:

function logClientId() {
  const idToken = ScriptApp.getIdentityToken();
  const body = idToken.split('.')[1];
  const decoded = Utilities.newBlob(Utilities.base64Decode(body)).getDataAsString();
  const payload = JSON.parse(decoded);
  Logger.log('Client ID: ' + payload.aud);
}

بالنسبة إلى Cloud Run، يمكنك ضبط شرائح جمهور مخصّصة للسماح بمعرّف العميل هذا.

إجراء طلب مصادق عليه

بعد إعداد الرمز المميّز للهوية، يمكنك تضمينه في Authorization عنوان طلباتك:

function callCloudRunService() {
  const idToken = ScriptApp.getIdentityToken();
  const url = 'https://your-service-url.a.run.app';

  const response = UrlFetchApp.fetch(url, {
    headers: {
      'Authorization': 'Bearer ' + idToken
    }
  });

  Logger.log(response.getContentText());
}