https://celnet--c.ap1.content.force.com/profilephoto/005/T
如上图片链接,需要授权才可以下载(显示)该图片。如果直接使用SDWebImage 会报一系列错误,图片无法下载显示。
如果想使用SDWebImage来下载授权的图片,就必须授予SDWebImage下载这张图片的权利。
首先,我们要对SDWebImage原理有一定的理解。传送门
了解了SDWebImage实现的整个流程,那么SDWebImage是怎么下载一张图片呢?
一路点击源码,可以发现如图所示
注意画圈的部分,就是授权的重点。(估计很多同学都恍然大悟了)
看到这里,很多同学都迫不及待的在SDWebImageDownloader类里面对request进行授权信息的配置,虽然也能完成下载显示授权图片的功能,但是这就违背了源码使用的初衷(不到万不得已的时候不修改)以及对SDWebImage大神们的否定,大神们肯定想到过诸如此类的场景。
(咳咳~ 注意标题)
再仔细看SDWebImageDownloader是一个单例。
切到 SDWebImageDownloader.h 文件
找到这个方法(问题已经解决90%)
当然SDWebImageDownloader不止可以设置请求信息,还可以设置各种属性,有兴趣的同学可以把SDWebImageDownloader类看一遍。
最后一步就是配置SDWebImageDownloader下载请求信息了,配置如下:
NSString*bearer = [NSStringstringWithFormat:@"Bearer %@", [UserInfoshare].accessToken];
[[SDWebImageDownloadersharedDownloader]setValue:bearerforHTTPHeaderField:@"Authorization"];//不需要配置的时候可以设置value为空
至此,就解决了SDWebImage(无侵入)下载授权图片问题。
YYKit中的图片下载缓存方案跟SDWebImage类似 上述也可以解决YYKit下载授权图片问题。
留点记录,共勉之。