কার্যকর ব্যবহারকারীর জন্য একটি OpenID Connect পরিচয় টোকেন (একটি JSON ওয়েব টোকেন বা JWT) পেতে আপনি ScriptApp.getIdentityToken() পদ্ধতি ব্যবহার করতে পারেন। আপনি এই টোকেনটি Google ক্লাউড পরিষেবাগুলির সাথে প্রমাণীকরণের জন্য ব্যবহার করতে পারেন, যেমন Cloud Run, যা এটি গ্রহণ করার জন্য কনফিগার করা আছে।
openid স্কোপ সক্রিয় করুন
একটি OpenID Connect ID টোকেন তৈরি করতে 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 ক্লাউড পরিষেবা কনফিগার করতে হবে। এর জন্য সাধারণত অনুমোদিত দর্শক হিসেবে স্ক্রিপ্টের ক্লায়েন্ট আইডি যোগ করতে হয়।
আপনার স্ক্রিপ্টের ক্লায়েন্ট আইডি খুঁজে পেতে, আপনি একটি পরিচয় টোকেন ডিকোড করতে পারেন:
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);
}
ক্লাউড রানের জন্য, আপনি এই ক্লায়েন্ট আইডিটি অনুমোদন করার জন্য কাস্টম অডিয়েন্স কনফিগার করতে পারেন।
একটি প্রমাণিত অনুরোধ করুন
একবার কনফিগার হয়ে গেলে, আপনি আপনার অনুরোধের 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());
}