Browse Source

add refresh token logic

niemes 2 years ago
parent
commit
d6430a1e44
3 changed files with 22 additions and 22 deletions
  1. 16 19
      index.js
  2. 2 2
      lib/API.js
  3. 4 1
      token.json

+ 16 - 19
index.js

@@ -18,7 +18,7 @@ let info = {
     followers: 99999,
     companyID: 991997, // spirit_3 company page
     orgaName: "spirit_3",
-    tokens: null,
+    token: {},
     expire: 0,
     active: true,
     updateTime: 4000, // 25000 Api call / 24H,
@@ -29,22 +29,16 @@ jsonfile.readFile(tokenFile, function (err, obj) {
     if (err) console.error(err)
     else {
         console.dir(obj)
-        obj.access_token = process.env.access_token
+        info.token = obj
+        obj = process.env.access_token
     }
   })
 
+function updateTokenEnv(data){
 
-if (process.env.access_token) {
-    info.tokens = process.env.access_token
-    info.active = true
-}
-
-if (process.env.expire) info.expire = process.env.expire
-
-function updateTokenEnv(token){
-
-    let reqObj = {"access_token": token}
-
+    let reqObj = data
+    console.log("[updateTokenEnv] :");
+    console.log(data);
     jsonfile.writeFile(tokenFile, reqObj, function (err) {
         if (err) console.error(err)
         else console.log("Token File updated")
@@ -60,16 +54,19 @@ async function watchLinkedin(){
 
             if (followersNb.firstDegreeSize) {
                 info.followers = followersNb.firstDegreeSize
-                process.env.lastFollowers = info.followers
-                // cleanUp error
-                info.error = 0
+                info.error = 0 // cleanUp error
             }
         }).catch( (err) => {
             console.log("[DEBUG-LOG][watchLinkedin ERROR]", info.error, err);
             info.error++
             if (info.error > 50) {
                 info.active = false
-                mail.notif(process.env.usermail, process.env.pswd, process.env.contact);
+                // try refresh token 
+                const data = await API.getAccessToken(info.token)
+
+                if(data.access_token) {
+                    mail.notif(process.env.usermail, process.env.pswd, process.env.contact);
+                }
             }
         });
     }
@@ -96,14 +93,14 @@ app.get('/callback', async (req, res) => {
         return;
     }
     try {
-        const data = await API.getAccessToken(req);
+        const data = await API.getAccessToken(req.query.code);
         if(data.access_token) {
             info.token = data.access_token;
             info.authorized = true;
             info.active = true
             process.env.access_token = info.token
             process.env.expire = data.expire ? data.expire : 0
-            updateTokenEnv(info.token)
+            updateTokenEnv(data)
         }
         res.redirect('/');
     } catch(err) {

+ 2 - 2
lib/API.js

@@ -42,8 +42,8 @@ class API {
         });
     }
 
-    static getAccessToken(req) {
-        const { code } = req.query;
+    static getAccessToken(code) {
+
         const body = {
             grant_type: 'authorization_code',
             code,

+ 4 - 1
token.json

@@ -1,3 +1,6 @@
 {
-    "access_token": ""
+    "access_token": "",
+    "expires_in": 0,
+    "refresh_token": "",
+    "refresh_token_expires_in": 0
 }