namespace Yw { /// /// ViewToken /// public sealed partial class BIMFaceClient { private readonly Dictionary _viewToken = new();//view token private const string _viewTokenUrl = @"https://api.bimface.com/view/token";//视图令牌请求地址 private readonly ViewTokenExpireHelper _viewTokenExpireHelper = new();//view token 过期辅助类 /// /// 获取ViewToken /// public async Task GetViewToken(string bimfaceId, eModelIdType modelIdType = eModelIdType.fileId) { await GetAccessToken(); if (!_viewToken.ContainsKey(bimfaceId) || _viewTokenExpireHelper.IsExpire(bimfaceId)) { await GetViewTokenAsync(bimfaceId, modelIdType); } return _viewToken[bimfaceId]; } //获取AccessToken,内部调用 private async Task GetViewTokenAsync(string bimfaceId, eModelIdType modelIdType = eModelIdType.fileId) { var url = $"{_viewTokenUrl}?{modelIdType}={bimfaceId}"; var request = new FlurlRequest(url); var header = HeaderHelper.GetHeader(_accessToken); request.WithHeader(header.Key, header.Value); var response = await request.GetAsync(); var jsonString = await response.GetStringAsync(); var result = JsonHelper.Json2Object(jsonString); result.TryThrowException(); if (_viewToken.ContainsKey(bimfaceId)) { _viewToken[bimfaceId] = result.Data; } else { _viewToken.Add(bimfaceId, result.Data); } _viewTokenExpireHelper.SetExpireTime(bimfaceId); } } }