diff --git a/app/src/main/java/com/github/catvod/spider/Ali.java b/app/src/main/java/com/github/catvod/spider/Ali.java index 8b9640ba..31ff3acd 100644 --- a/app/src/main/java/com/github/catvod/spider/Ali.java +++ b/app/src/main/java/com/github/catvod/spider/Ali.java @@ -10,6 +10,7 @@ import com.github.catvod.bean.Result; import com.github.catvod.bean.Vod; import com.github.catvod.bean.ali.Data; import com.github.catvod.bean.ali.Item; +import com.github.catvod.crawler.SpiderDebug; import com.github.catvod.net.OkHttpUtil; import com.github.catvod.utils.Misc; import com.github.catvod.utils.Prefers; @@ -41,8 +42,9 @@ public class Ali { private final Pattern pattern = Pattern.compile("www.aliyundrive.com/s/([^/]+)(/folder/([^/]+))?"); private ScheduledExecutorService service; - private static String accessToken; + private static String authorization; private String refreshToken; + private long expiresTime; private ImageView view; public Ali(String token) { @@ -60,7 +62,7 @@ public class Ali { private static HashMap getHeaders(String shareToken) { HashMap headers = getHeaders(); - if (accessToken != null) headers.put("authorization", accessToken); + if (authorization != null) headers.put("authorization", authorization); headers.put("x-share-token", shareToken); return headers; } @@ -89,8 +91,8 @@ public class Ali { String shareToken = ids[1]; String fileId = ids[2]; String sub = getSub(shareId, shareToken, ids); - refreshAccessToken(); - while (TextUtils.isEmpty(accessToken)) SystemClock.sleep(250); + if (System.currentTimeMillis() > expiresTime) refreshAccessToken(); + while (TextUtils.isEmpty(authorization)) SystemClock.sleep(250); if (flag.equals("原畫")) { return Result.get().url(getDownloadUrl(shareId, shareToken, fileId)).sub(sub).header(getHeaders()).string(); } else { @@ -176,11 +178,12 @@ public class Ali { body.put("refresh_token", refreshToken); body.put("grant_type", "refresh_token"); JSONObject object = new JSONObject(post("https://auth.aliyundrive.com/v2/account/token", body)); - accessToken = object.getString("token_type") + " " + object.getString("access_token"); + authorization = object.getString("token_type") + " " + object.getString("access_token"); + expiresTime = System.currentTimeMillis() + object.getInt("expires_in") * 1000L; refreshToken = object.getString("refresh_token"); - Prefers.put("token", refreshToken); + SpiderDebug.log("refresh token: " + refreshToken); } catch (JSONException e) { - accessToken = null; + authorization = null; e.printStackTrace(); checkService(); getQRCode(); diff --git a/jar/custom_spider.jar b/jar/custom_spider.jar index 878cd690..206c06c6 100644 Binary files a/jar/custom_spider.jar and b/jar/custom_spider.jar differ diff --git a/jar/custom_spider.jar.md5 b/jar/custom_spider.jar.md5 index 36e1a637..4ae88c95 100644 --- a/jar/custom_spider.jar.md5 +++ b/jar/custom_spider.jar.md5 @@ -1 +1 @@ -c9e6da557fc51082b490f840b865b597 +3d99b9f6015e1779941725bbb179eb5f