smgc commited on
Commit
9bb0476
1 Parent(s): f068833

Update app.js

Browse files
Files changed (1) hide show
  1. app.js +37 -1
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() {