我目前正在开发基于Sharepoint REST API和Microsoft Graph的应用程序。我的应用程序主要由选项卡页面组成,在第一个选项卡上我想显示来自sharepoint的新闻。为此我想从新闻中获取图像,但使用图像的URL作为图像源返回我“禁止”错误。所以,我决定找到一种下载这些图像的方法。我一直在寻找几天的方式,一无所获......
有没有人知道这样做的方法,或者为什么我有禁止访问错误?
我带来了一些精确性,我正在使用HttpClient通过REST API对租户进行身份验证:
client = new HttpClient();
Uri mUri = new Uri(App.ReturnUri);
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var data = await DependencyService.Get<IAuthenticator>()
.Authenticate(App.LoginAuthority, App.RestResourceUri, App.ClientId, mUri);
App.AuthenticationResult = data;
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", App.AuthenticationResult.AccessToken);
从那以后,我希望有人知道是否有办法下载图像,或者访问url以便将它们用作Source。我成功地检索了URL但没有显示图像,知道我可以从sharepoint检索任何其他数据
感谢您的帮助,
答案 0 :(得分:0)
Image
组件可以使用URL作为其数据,但这需要不在身份验证后面的图像,这可能是您的SharePoint图像的情况。这也是为什么它会给你一个Forbidden错误。
var webImage = new Image { Aspect = Aspect.AspectFit };
webImage.Source = ImageSource.FromUri(new Uri("https://xamarin.com/content/images/pages/forms/example-app.png"));
要为SharePoint添加身份验证层,您可能可以实现自己的UriImageSource
实现。最后,ImageSource
只需要一个Stream
对象,因此可以从互联网或本地存储中获取该对象。
要下载和存储图像,您必须专门为两个平台编写代码,因为本地存储的工作方式不同。查看此博客文章作为起点与您自己的代码相结合。
https://blog.falafel.com/xamarin-forms-storing-and-retrieving-photos/