Spaces:
Running
Running
Update app.js
Browse files
app.js
CHANGED
@@ -30,7 +30,43 @@ function logRequest(req, status, message) {
|
|
30 |
}
|
31 |
|
32 |
async function getAccessToken() {
|
33 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
34 |
}
|
35 |
|
36 |
function getLocation() {
|
|
|
30 |
}
|
31 |
|
32 |
async function getAccessToken() {
|
33 |
+
const now = Date.now() / 1000;
|
34 |
+
|
35 |
+
if (tokenCache.accessToken && now < tokenCache.expiry - 120) {
|
36 |
+
return tokenCache.accessToken;
|
37 |
+
}
|
38 |
+
|
39 |
+
if (tokenCache.refreshPromise) {
|
40 |
+
await tokenCache.refreshPromise;
|
41 |
+
return tokenCache.accessToken;
|
42 |
+
}
|
43 |
+
|
44 |
+
tokenCache.refreshPromise = (async () => {
|
45 |
+
try {
|
46 |
+
const response = await fetch(TOKEN_URL, {
|
47 |
+
method: 'POST',
|
48 |
+
headers: {
|
49 |
+
'Content-Type': 'application/json'
|
50 |
+
},
|
51 |
+
body: JSON.stringify({
|
52 |
+
client_id: CLIENT_ID,
|
53 |
+
client_secret: CLIENT_SECRET,
|
54 |
+
refresh_token: REFRESH_TOKEN,
|
55 |
+
grant_type: 'refresh_token'
|
56 |
+
})
|
57 |
+
});
|
58 |
+
|
59 |
+
const data = await response.json();
|
60 |
+
|
61 |
+
tokenCache.accessToken = data.access_token;
|
62 |
+
tokenCache.expiry = now + data.expires_in;
|
63 |
+
} finally {
|
64 |
+
tokenCache.refreshPromise = null;
|
65 |
+
}
|
66 |
+
})();
|
67 |
+
|
68 |
+
await tokenCache.refreshPromise;
|
69 |
+
return tokenCache.accessToken;
|
70 |
}
|
71 |
|
72 |
function getLocation() {
|