在.net Maui中获取受访问令牌保护的图像(FFImageLoading的替代方案)



从Maui dotnet应用程序获取api中受访问令牌保护的图像

以前Xamarin使用FFImageLoading

ImageService.Instance.Initialize(new Configuration
{
HttpClient = new HttpClient(new AuthenticatedHttpImageClientHandler
(_result.AccessToken))
});

我需要替代。net Maui

我设法使它以这种方式在MAUI中工作。

在app . xml .cs中获取服务提供者

public App(IServiceProvider provider)
{
InitializeComponent();

Services = provider;
}

然后您可以获得配置实例并替换HttpClient。你可以在你的自定义onstart方法

中调用它
var configuration = Services.GetService<IConfiguration>();

configuration.HttpClient = new HttpClient(new AuthenticatedHttpImageClientHandler('your token here');

这个类插入令牌

public class AuthenticatedHttpImageClientHandler : HttpClientHandler
{
private  readonly Func<Task<string>> _getToken;
public AuthenticatedHttpImageClientHandler(Func<Task<string>> getToken)
{
_getToken = getToken ?? throw new ArgumentNullException("getToken");
AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
}
protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request,
CancellationToken cancellationToken)
{
request.Headers.Add("Authorization", "Bearer " + _getToken.Invoke().Result);
return await base.SendAsync(request, cancellationToken).ConfigureAwait(false);
}
}

最新更新