Google Cloud की सेवाओं से कनेक्ट करना

उपयोगकर्ता के लिए OpenID Connect आइडेंटिटी टोकन (JSON Web Token या JWT) पाने के लिए, ScriptApp.getIdentityToken() तरीके का इस्तेमाल किया जा सकता है. इस टोकन का इस्तेमाल, Google Cloud की उन सेवाओं के साथ पुष्टि करने के लिए किया जा सकता है जिन्हें इसे स्वीकार करने के लिए कॉन्फ़िगर किया गया है. जैसे, Cloud Run.

openid स्कोप चालू करें

OpenID Connect आईडी टोकन जनरेट करने के लिए, openid स्कोप ज़रूरी है. आपको उन सभी अन्य स्कोप की सूची भी बनानी होगी जिनका इस्तेमाल आपकी स्क्रिप्ट करती है. जैसे, UrlFetch सेवा के लिए https://www.googleapis.com/auth/script.external_request. इस उदाहरण में, https://www.googleapis.com/auth/userinfo.email स्कोप को शामिल किया गया है, ताकि उपयोगकर्ता के ईमेल पते को आइडेंटिटी टोकन में जोड़ा जा सके.

अपने स्क्रिप्ट प्रोजेक्ट की मेनिफ़ेस्ट फ़ाइल (appsscript.json) में, oauthScopes ऐरे में openid स्कोप और अन्य ज़रूरी स्कोप जोड़ें:

{
  "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 के लिए, इस Client-ID को अनुमति देने के लिए, कस्टम ऑडियंस को कॉन्फ़िगर किया जा सकता है.

पुष्टि किया गया अनुरोध करना

कॉन्फ़िगर करने के बाद, अपने अनुरोधों के 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());
}