从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);
}
}