Node.js में Google Service Account JWT बनाना
googleapis npm पैकेज Google APIs के लिए मानक है।
यह काम तो करता है, लेकिन यह आपके प्रोजेक्ट में 380KB और 450 से अधिक dependencies जोड़ देता है।
यदि आपको CI स्क्रिप्ट के लिए केवल एक API की आवश्यकता है, तो आपको इतने भारी पैकेज की आवश्यकता नहीं है।
मैंने केवल 60 लाइनों के कोड का उपयोग करके URL index status चेक करने के लिए एक स्क्रिप्ट बनाई है।
यह तीन built-in Node.js modules का उपयोग करता है:
- crypto
- fetch
- URL
यह आपके repository में शून्य पैकेज जोड़ता है।
Google service account auth RFC 7523 मानक का पालन करता है।
इसकी प्रक्रिया यहाँ दी गई है:
- अपने client email और private key के साथ एक JWT बनाएँ।
- उस JWT को Google token endpoint पर POST करें।
- एक access token प्राप्त करें।
- उस token का उपयोग अपने API request header में करें।
एक महत्वपूर्ण विवरण: webmasters scope का उपयोग करें। नया searchconsole scope URL Inspection API के लिए काम नहीं करेगा।
आपको JWT के लिए Base64url encoding का उपयोग करना चाहिए। Standard Base64 में तीन बदलावों की आवश्यकता होती है:
- Padding हटा दें।
- को - से बदलें।
- / को _ से बदलें।
Google Cloud से आपकी private key पहले से ही सही format में है। टोकन को sign करने के लिए आपको किसी बाहरी library की आवश्यकता नहीं है।
जब आप token endpoint को कॉल करते हैं, तो error response को log करें। Google विफलताओं के लिए विशिष्ट कारण प्रदान करता है, जैसे कि expired tokens या missing service accounts।
API call के लिए:
- Authorization header को Bearer [token] पर सेट करें।
- सुनिश्चित करें कि आपका siteUrl आपके Search Console property से बिल्कुल मेल खाता हो।
- अपने service account email को Search Console में एक user के रूप में जोड़ें।
यह दृष्टिकोण CI pipelines जैसे सीमित कार्यों के लिए सबसे अच्छा काम करता है।
इसका उपयोग तब न करें यदि आपको चाहिए:
- Multiple Google APIs.
- Automatic token refreshes.
- Complex retry logic.
- High complexity वाला production server code.
एक एकल CI कार्य के लिए, 450 dependencies के बजाय 60 लाइनों का कोड बेहतर है। इस raw flow को समझने से libraries के विफल होने पर debugging भी आसान हो जाती है।