Node.js ਵਿੱਚ Google Service Account JWT ਬਣਾਉਣਾ
googleapis npm package Google APIs ਲਈ ਇੱਕ ਮਿਆਰਤ (standard) ਹੈ।
ਇਹ ਕੰਮ ਕਰਦਾ ਹੈ। ਪਰ ਇਹ ਤੁਹਾਡੇ ਪ੍ਰੋਜੈਕਟ ਵਿੱਚ 380KB ਅਤੇ 450 ਤੋਂ ਵੱਧ dependencies ਜੋੜ ਦਿੰਦਾ ਹੈ।
ਜੇਕਰ ਤੁਹਾਨੂੰ ਸਿਰਫ਼ ਇੱਕ CI script ਲਈ ਇੱਕ API ਦੀ ਲੋੜ ਹੈ, ਤਾਂ ਤੁਹਾਨੂੰ ਇੰਨੀ ਜ਼ਿਆਦਾ ਭਾਰੀ ਚੀਜ਼ ਦੀ ਲੋੜ ਨਹੀਂ ਹੈ।
ਮੈਂ ਸਿਰਫ਼ 60 ਲਾਈਨਾਂ ਦੇ ਕੋਡ ਦੀ ਵਰਤੋਂ ਕਰਕੇ URL index status ਦੀ ਜਾਂਚ ਕਰਨ ਲਈ ਇੱਕ script ਬਣਾਈ ਹੈ।
ਇਹ ਤਿੰਨ built-in Node.js modules ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ:
- crypto
- fetch
- URL
ਇਹ ਤੁਹਾਡੇ repository ਵਿੱਚ ਕੋਈ ਵੀ package ਨਹੀਂ ਜੋੜਦਾ।
Google service account auth RFC 7523 standard ਦੀ ਪਾਲਣਾ ਕਰਦਾ ਹੈ।
ਪ੍ਰਕਿਰਿਆ (process) ਇਹ ਹੈ:
- ਆਪਣੇ 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 ਵਿੱਚ ਹੈ। Token 'ਤੇ sign ਕਰਨ ਲਈ ਤੁਹਾਨੂੰ ਕਿਸੇ ਬਾਹਰੀ (external) library ਦੀ ਲੋੜ ਨਹੀਂ ਹੈ।
ਜਦੋਂ ਤੁਸੀਂ token endpoint ਨੂੰ ਕਾਲ ਕਰਦੇ ਹੋ, ਤਾਂ error response ਨੂੰ log ਕਰੋ। Google ਅਸਫਲਤਾਵਾਂ ਲਈ ਖਾਸ ਕਾਰਨ ਦੱਸਦਾ ਹੈ, ਜਿਵੇਂ ਕਿ ਖਤਮ ਹੋ ਚੁੱਕੇ (expired) tokens ਜਾਂ ਗੁੰਮ ਹੋਏ service accounts।
API call ਲਈ:
- Authorization header ਨੂੰ Bearer [token] 'ਤੇ ਸੈੱਟ ਕਰੋ।
- ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਤੁਹਾਡਾ siteUrl ਤੁਹਾਡੀ Search Console property ਨਾਲ ਬਿਲਕੁਲ ਮੇਲ ਖਾਂਦਾ ਹੈ।
- ਆਪਣੇ service account email ਨੂੰ Search Console ਵਿੱਚ ਇੱਕ user ਵਜੋਂ ਜੋੜੋ।
ਇਹ ਤਰੀਕਾ CI pipelines ਵਰਗੇ ਸੀਮਤ ਕੰਮਾਂ ਲਈ ਸਭ ਤੋਂ ਵਧੀਆ ਕੰਮ ਕਰਦਾ ਹੈ।
ਇਸ ਦੀ ਵਰਤੋਂ ਨਾ ਕਰੋ ਜੇਕਰ ਤੁਹਾਨੂੰ ਇਹਨਾਂ ਦੀ ਲੋੜ ਹੈ:
- ਕਈ Google APIs।
- Automatic token refreshes।
- Complex retry logic।
- ਉੱਚ ਗੁੰਝਲਦਾਰਤਾ (high complexity) ਵਾਲਾ production server code।
ਇੱਕ ਸਿੰਗਲ CI task ਲਈ, 450 dependencies ਨਾਲੋਂ 60 ਲਾਈਨਾਂ ਦਾ ਕੋਡ ਬਿਹਤਰ ਹੈ। ਇਸ raw flow ਨੂੰ ਸਮਝਣ ਨਾਲ libraries ਦੇ ਅਸਫਲ ਹੋਣ 'ਤੇ debugging ਵੀ ਆਸਾਨ ਹੋ ਜਾਂਦੀ ਹੈ।