𝗥𝗼𝗹𝗹𝗶𝗻𝗴 𝗮 𝗚𝗼𝗼𝗴𝗹𝗲 𝗦𝗲𝗿𝘃𝗶𝗰𝗲 𝗔𝗰𝗰𝗼𝘂𝗻𝘁 𝗝𝗪𝗧 𝗶𝗻 𝗡𝗼𝗱𝗲.𝗷𝘀
Watengenezaji wengi hutumia kifurushi cha npm cha googleapis ili kuita Google APIs. Inafanya kazi vizuri. Lakini pia inaongeza 380KB na zaidi ya utegemezi (dependencies) 450 kwenye mradi wako.
Ikiwa unahitaji API moja tu kwa ajili ya skripti rahisi ya CI, hii ni kupitiliza.
Nilitengeneza skripti ya kuangalia hali ya kurejelewa kwa URL (URL index status) nikitumia vitu vitatu tu vya ndani vya Node.js: crypto, fetch, na URL. Haitumii kifurushi chochote cha nje.
Uthibitishaji (authentication) unafuata RFC 7523. Hivi ndivyo unavyofanya:
- Tengeneza JWT ukitumia barua pepe ya akaunti yako ya huduma (service account email) na funguo yako ya siri (private key).
- POST JWT hiyo kwenye Google token endpoint.
- Pokea token ya ufikiaji (access token) inayodumu kwa muda mfupi.
- Tumia token hiyo kama Bearer header kwa ajili ya maombi yako ya API.
JWT inahitaji madai (claims) haya:
- iss: barua pepe yako ya mteja.
- scope: webmasters.readonly.
- aud: URL ya Google token.
- iat: wakati wa sasa.
- exp: wakati wa sasa pamoja na sekunde 3600.
Kumbuka: Tumia scope ya webmasters. Scope mpya ya searchconsole haifanyi kazi kwa ajili ya URL Inspection API.
Sehemu ngumu ni uwekaji wa Base64url (Base64url encoding). Lazima uondoe uongezaji (padding) na ubadilishe herufi ili iweze kufanya kazi. Unaweza kutumia moduli ya node:crypto kusaini JWT kwa kutumia funguo yako ya siri ya RSA. Funguo kutoka kwenye faili yako ya Google Cloud JSON inafanya kazi moja kwa moja.
Unapobadilisha token, weka kumbukumbu (log) ya jibu ghafi la kosa (raw error response). Google hutoa ujumbe mahususi kama "Service account not found." Hii inakusaidia kurekebisha makosa haraka.
Mbinu hii inafanya kazi vizuri zaidi wakati:
- Unatumia API moja katika mkondo wa CI (CI pipeline).
- Unataka kuweka repositori yako iwe nyepesi.
- Unataka kuelewa mtiririko wa uthibitishaji (auth flow).
Usitumie hii ikiwa:
- Unaita Google APIs nyingi tofauti.
- Unahitaji uboreshaji wa token wa kiotomatiki (automatic token refreshing).
- Unajenga seva kubwa ya uzalishaji (production server).
Kodo ndogo na inayosomeka ni bora kuliko mamia ya utegemezi yaliyofichwa kwa ajili ya kazi mahususi.