diff --git a/lib/http/init.dart b/lib/http/init.dart index 6ffacc2f..05bf5e28 100644 --- a/lib/http/init.dart +++ b/lib/http/init.dart @@ -15,18 +15,9 @@ import 'package:dio_cookie_manager/dio_cookie_manager.dart'; class Request { static final Request _instance = Request._internal(); static late CookieManager cookieManager; - + static late final Dio dio; factory Request() => _instance; - static Dio dio = Dio() - ..httpClientAdapter = Http2Adapter( - ConnectionManager( - idleTimeout: const Duration(milliseconds: 10000), - // Ignore bad certificate - onClientCreate: (_, config) => config.onBadCertificate = (_) => true, - ), - ); - /// 设置cookie static setCookie() async { Box user = GStrorage.user; @@ -63,16 +54,6 @@ class Request { dio.options.headers['cookie'] = cookieString; } - // 移除cookie - static removeCookie() async { - await cookieManager.cookieJar - .saveFromResponse(Uri.parse(HttpString.baseUrl), []); - await cookieManager.cookieJar - .saveFromResponse(Uri.parse(HttpString.baseApiUrl), []); - cookieManager.cookieJar.deleteAll(); - dio.interceptors.add(cookieManager); - } - // 从cookie中获取 csrf token static Future getCsrf() async { var cookies = await cookieManager.cookieJar @@ -114,7 +95,16 @@ class Request { options.headers['x-bili-aurora-zone'] = 'sh001'; options.headers['referer'] = 'https://www.bilibili.com/'; } - dio.options = options; + + dio = Dio(options) + ..httpClientAdapter = Http2Adapter( + ConnectionManager( + idleTimeout: const Duration(milliseconds: 10000), + // Ignore bad certificate + onClientCreate: (_, config) => config.onBadCertificate = (_) => true, + ), + ); + //添加拦截器 dio.interceptors.add(ApiInterceptor()); diff --git a/lib/pages/setting/controller.dart b/lib/pages/setting/controller.dart index 70405e4b..732ec68c 100644 --- a/lib/pages/setting/controller.dart +++ b/lib/pages/setting/controller.dart @@ -30,7 +30,7 @@ class SettingController extends GetxController { } loginOut() async { - await Request.removeCookie(); + await Request.cookieManager.cookieJar.deleteAll(); await Get.find().resetUserInfo(); userLogin.value = user.get(UserBoxKey.userLogin) ?? false; userInfoCache.put('userInfoCache', null); diff --git a/lib/pages/webview/controller.dart b/lib/pages/webview/controller.dart index ab7f3cc1..35f574e5 100644 --- a/lib/pages/webview/controller.dart +++ b/lib/pages/webview/controller.dart @@ -59,16 +59,7 @@ class WebviewController extends GetxController { 'https://passport.bilibili.com/web/sso/exchange_cookie') || url.startsWith('https://m.bilibili.com/'))) { try { - var cookies = - await WebviewCookieManager().getCookies(HttpString.baseUrl); - var apiCookies = await WebviewCookieManager() - .getCookies(HttpString.baseApiUrl); - var tCookies = - await WebviewCookieManager().getCookies(HttpString.tUrl); - await SetCookie.onSet(cookies, HttpString.baseUrl); - await SetCookie.onSet(apiCookies, HttpString.baseApiUrl); - await SetCookie.onSet(tCookies, HttpString.tUrl); - await UserHttp.userInfo(); + await SetCookie.onSet(); var result = await UserHttp.userInfo(); UserHttp.thirdLogin(); print('网页登录: $result'); diff --git a/lib/utils/cookie.dart b/lib/utils/cookie.dart index 3d139371..eed98900 100644 --- a/lib/utils/cookie.dart +++ b/lib/utils/cookie.dart @@ -1,27 +1,19 @@ -import 'package:cookie_jar/cookie_jar.dart'; +import 'package:pilipala/http/constants.dart'; import 'package:pilipala/http/init.dart'; -import 'package:pilipala/utils/utils.dart'; +import 'package:webview_cookie_manager/webview_cookie_manager.dart'; class SetCookie { - static onSet(List cookiesList, String url) async { - // domain url - List jarCookies = []; - if (cookiesList.isNotEmpty) { - for (var i in cookiesList) { - Cookie jarCookie = Cookie(i.name, i.value); - jarCookies.add(jarCookie); - } - } - String cookiePath = await Utils.getCookiePath(); - PersistCookieJar cookieJar = PersistCookieJar( - ignoreExpires: true, - storage: FileStorage(cookiePath), - ); - await cookieJar.saveFromResponse(Uri.parse(url), jarCookies); - // 重新设置 cookie - Request.setCookie(); - Request.cookieManager.cookieJar - .saveFromResponse(Uri.parse(url), jarCookies); - return true; + static onSet() async { + var cookies = await WebviewCookieManager().getCookies(HttpString.baseUrl); + await Request.cookieManager.cookieJar + .saveFromResponse(Uri.parse(HttpString.baseUrl), cookies); + + cookies = await WebviewCookieManager().getCookies(HttpString.baseApiUrl); + await Request.cookieManager.cookieJar + .saveFromResponse(Uri.parse(HttpString.baseApiUrl), cookies); + + cookies = await WebviewCookieManager().getCookies(HttpString.tUrl); + await Request.cookieManager.cookieJar + .saveFromResponse(Uri.parse(HttpString.tUrl), cookies); } }