diff --git a/lib/http/member.dart b/lib/http/member.dart index 663070d6..37e70b8c 100644 --- a/lib/http/member.dart +++ b/lib/http/member.dart @@ -42,12 +42,14 @@ class MemberHttp { static Future memberInfo({ int? mid, String token = '', + dynamic wwebid, }) async { Map params = await WbiSign().makSign({ 'mid': mid, 'token': token, 'platform': 'web', 'web_location': 1550101, + 'w_webid': wwebid, }); var res = await Request().get( Api.memberInfo, diff --git a/lib/pages/member/controller.dart b/lib/pages/member/controller.dart index 0f588791..cca6be3a 100644 --- a/lib/pages/member/controller.dart +++ b/lib/pages/member/controller.dart @@ -1,3 +1,7 @@ +import 'dart:convert'; + +import 'package:PiliPalaX/http/constants.dart'; +import 'package:PiliPalaX/http/init.dart'; import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; @@ -10,6 +14,8 @@ import 'package:PiliPalaX/models/member/coin.dart'; import 'package:PiliPalaX/models/member/info.dart'; import 'package:PiliPalaX/utils/storage.dart'; import 'package:share_plus/share_plus.dart'; +import 'package:html/dom.dart' as dom; +import 'package:html/parser.dart' as html_parser; import '../video/detail/introduction/widgets/group_panel.dart'; @@ -29,6 +35,7 @@ class MemberController extends GetxController { RxInt attribute = (-1).obs; RxString attributeText = '关注'.obs; RxList recentCoinsList = [].obs; + String? wwebid; @override void onInit() async { @@ -45,9 +52,10 @@ class MemberController extends GetxController { // 获取用户信息 Future> getInfo() async { + await getWwebid(); await getMemberStat(); await getMemberView(); - var res = await MemberHttp.memberInfo(mid: mid); + var res = await MemberHttp.memberInfo(mid: mid, wwebid: wwebid); if (res['status']) { memberInfo.value = res['data']; face.value = res['data'].face; @@ -55,6 +63,20 @@ class MemberController extends GetxController { return res; } + Future getWwebid() async { + try { + dynamic response = + await Request().get('${HttpString.spaceBaseUrl}/$mid/dynamic'); + dom.Document document = html_parser.parse(response.data); + dom.Element? scriptElement = + document.querySelector('script#__RENDER_DATA__'); + wwebid = jsonDecode( + Uri.decodeComponent(scriptElement?.text ?? ''))['access_id']; + } catch (e) { + print('failed to get wwebid: $e'); + } + } + // 获取用户状态 Future> getMemberStat() async { var res = await MemberHttp.memberStat(mid: mid);