Node.js-ൽ ഒരു Google Service Account JWT നിർമ്മിക്കാം
Google APIs-കൾക്കായി ഉപയോഗിക്കുന്ന സ്റ്റാൻഡേർഡ് പാക്കേജാണ് googleapis npm പാക്കേജ്.
ഇത് പ്രവർത്തിക്കും. പക്ഷേ, ഇത് നിങ്ങളുടെ പ്രോജക്റ്റിലേക്ക് 380KB വലിപ്പവും 450-ലധികം dependencies-ഉം കൂട്ടിച്ചേർക്കുന്നു.
ഒരു CI സ്ക്രിപ്റ്റിനായി നിങ്ങൾക്ക് ഒരു API മാത്രം ആവശ്യമുള്ളതെങ്കിൽ, ഇത്രയധികം ഭാരം ആവശ്യമില്ല.
വെറും 60 വരി കോഡ് മാത്രം ഉപയോഗിച്ച് URL ഇൻഡക്സ് സ്റ്റാറ്റസ് പരിശോധിക്കാനുള്ള ഒരു സ്ക്രിപ്റ്റ് ഞാൻ നിർമ്മിച്ചു.
ഇത് മൂന്ന് ബിൽറ്റ്-ഇൻ Node.js മോഡ്യൂളുകൾ ഉപയോഗിക്കുന്നു:
- crypto
- fetch
- URL
ഇത് നിങ്ങളുടെ റെപ്പോസിറ്ററിയിലേക്ക് പുതിയ പാക്കേജുകളൊന്നും ചേർക്കുന്നില്ല.
Google service account auth, RFC 7523 സ്റ്റാൻഡേർഡ് പിന്തുടരുന്നു.
അതിന്റെ പ്രക്രിയ ഇതാ:
- നിങ്ങളുടെ ക്ലയന്റ് ഇമെയിലും പ്രൈവറ്റ് കീയും ഉപയോഗിച്ച് ഒരു JWT നിർമ്മിക്കുക.
- ആ JWT ഗൂഗിൾ ടോക്കൺ എൻഡ്പോയിന്റിലേക്ക് (token endpoint) POST ചെയ്യുക.
- ഒരു access token സ്വീകരിക്കുക.
- ആ ടോക്കൺ നിങ്ങളുടെ API റിക്വസ്റ്റ് ഹെഡറിൽ ഉപയോഗിക്കുക.
ഒരു പ്രധാന കാര്യം: webmasters scope ഉപയോഗിക്കുക. പുതിയ searchconsole scope, URL Inspection API-ക്ക് ഉപയോഗിക്കാൻ കഴിയില്ല.
JWT-ക്കായി നിങ്ങൾ Base64url encoding നിർബന്ധമായും ഉപയോഗിക്കണം. സ്റ്റാൻഡേർഡ് Base64-ൽ മൂന്ന് മാറ്റങ്ങൾ വരുത്തേണ്ടതുണ്ട്:
- Padding ഒഴിവാക്കുക.
- എന്നതിന് പകരം - ഉപയോഗിക്കുക.
- / എന്നതിന് പകരം _ ഉപയോഗിക്കുക.
Google Cloud-ൽ നിന്നുള്ള നിങ്ങളുടെ പ്രൈവറ്റ് കീ ശരിയായ ഫോർമാറ്റിൽ തന്നെയായിരിക്കും. ടോക്കൺ സൈൻ ചെയ്യാൻ നിങ്ങൾക്ക് പുറമെ നിന്നുള്ള ലൈബ്രറികൾ ആവശ്യമില്ല.
നിങ്ങൾ ടോക്കൺ എൻഡ്പോയിന്റ് വിളിക്കുമ്പോൾ, എറർ റെസ്പോൺസ് (error response) ലോഗ് ചെയ്യുക. ടോക്കൺ കാലാവധി കഴിഞ്ഞതോ (expired tokens) സർവീസ് അക്കൗണ്ട് ഇല്ലാത്തതോ പോലുള്ള പരാജയങ്ങൾക്ക് കൃത്യമായ കാരണങ്ങൾ ഗൂഗിൾ നൽകുന്നുണ്ട്.
API കോളിനായി:
- Authorization ഹെഡർ Bearer [token] എന്ന് സെറ്റ് ചെയ്യുക.
- നിങ്ങളുടെ siteUrl, Search Console പ്രോപ്പർട്ടിയുമായി കൃത്യമായി പൊരുത്തപ്പെടുന്നുണ്ടെന്ന് ഉറപ്പാക്കുക.
- നിങ്ങളുടെ സർവീസ് അക്കൗണ്ട് ഇമെയിൽ Search Console-ൽ ഒരു യൂസർ ആയി ചേർക്കുക.
CI പൈപ്പ്ലൈനുകൾ പോലുള്ള ചെറിയ ജോലികൾക്ക് ഈ രീതിയാണ് ഏറ്റവും അനുയോജ്യം.
താഴെ പറയുന്നവ ആവശ്യമുണ്ടെങ്കിൽ ഇത് ഉപയോഗിക്കരുത്:
- ഒന്നിലധികം Google APIs.
- ഓട്ടോമാറ്റിക് ടോക്കൺ റിഫ്രഷ്.
- സങ്കീർണ്ണമായ റീട്രൈ ലോജിക് (retry logic).
- ഉയർന്ന സങ്കീർണ്ണതയുള്ള പ്രൊഡക്ഷൻ സെർവർ കോഡ്.
ഒരു സിംഗിൾ CI ടാസ്കിന്, 450 dependencies-നേക്കാൾ നല്ലത് 60 വരി കോഡാണ്. ലൈബ്രറികൾ പരാജയപ്പെടുമ്പോൾ ഈ പ്രക്രിയ നേരിട്ട് മനസ്സിലാക്കുന്നത് ഡീബഗ്ഗിംഗ് (debugging) എളുപ്പമാക്കും.