关于在 iOS 上部分第三方 APP 访问相册不需要授权也能访问的问题

2018-05-24 11:53:58 +08:00
 dewi

今天无聊,下了个炒币资讯的 APP,在上传头像这个步骤的时候,发现居然不需要用户授权,直接能进入相册选择照片,没有任何的提示信息直接就进入到了相册!!!后面百度了下,发现出现这个问题的都是 iOS11 的用户,我用另外一台手机是 iOS9 的测试,该 APP 会弹出授权提示框,必须用户确认后才能进入相册。我比较好奇,难道这是一个 iOS11 的 BUG 吗?

7548 次点击
所在节点    程序员
17 条回复
dewi
2018-05-24 11:54:55 +08:00
补充下,在 iOS11 系统下,在设置-隐私-相册中也找不到该 APP。超级好奇这个程序员是这么做到的!
dibage
2018-05-24 12:01:16 +08:00
我上次也发现了,感觉应该是先预览,如果选择图片的话,回进行权限请求提示,拒绝的话则无法获取图片数据
应该是这样的
kera0a
2018-05-24 12:04:16 +08:00
iOS11 默认开启相册读权限,无需用户授权
honeycomb
2018-05-24 12:06:32 +08:00
@dewi 这是 intended behavior,因为应用自始至终都没有访问到相册。

实际上发生了这样的事:
应用让系统的相册返回一张照片,这张照片是你刻意挑的。这个过程中只有系统的相册访问到了相册。

Android 中也有类似的特性。
xuhaoyangx
2018-05-24 12:08:13 +08:00
@honeycomb #4 Android 有吗?有文章观摩吗?
kera0a
2018-05-24 12:09:50 +08:00
@honeycomb 对的
上次 V 站看到说没有权限能访问通讯录,后来发现只是能访问你特意选择的那一条。
相册也类似,APP 只能得到你特意选择的那一张
SourceMan
2018-05-24 12:11:19 +08:00
类似于 web 上面的 input file 吗?应用只能得到你最后选择的那个
afpro
2018-05-24 12:40:01 +08:00
android: Intent.ACTION_GET_CONTENT
wpo
2018-05-24 15:06:46 +08:00
iOS 11 默认就有“读”权限,“写”需要授权。
dewi
2018-05-24 19:17:35 +08:00
@dibage 不是的噢,那个 APP 点击了图片就直接上传了
dewi
2018-05-24 19:18:24 +08:00
@kera0a 但是点击照片上传了以后,系统也没有任何的获取请求的弹窗 默认就上传成功了
dewi
2018-05-24 19:20:55 +08:00
@honeycomb 但是我选择照片上传了以后,在设置隐私里也没看到这个 APP。你的意思是说,其实这一次的获取请求是调用了系统相册进行获取的,而不是 APP 直接获取,所以不会在隐私中显示,是这个意思吗?
dewi
2018-05-24 19:21:58 +08:00
@wpo 但是读权限好歹也要弹窗提示吧,那个 APP 不存在的,直接就可以查看。
w99wen
2018-05-24 19:41:06 +08:00
如果使用苹果提供的一个特定的选择图片的类,这个类只能选择一张图片,而且选择过程 app 不知道到底有多少张图片,只能知道用户最终选择了一张照片,这种不需要权限的。
如果是够获取所有图片的路径,这个是要权限。
yushiro
2018-05-24 19:55:56 +08:00
在 ios 的浏览器里面上传一张图片,也不用授权给浏览器,一个原理,只能访问你选择的那张图片,其他图片对 app 是不开放的
honeycomb
2018-05-24 22:23:25 +08:00
@dewi 是的,就是这么回事。
app 委托由系统图库请求你 pick 一张照片(或者是联系人等需要权限的东西)给它,如此:

app 本身不需要访问整个资源的权限
实际操作者是有权限的系统图库
从结果上依然是用户明示地授权,而且总是一次性的,可以避免滥用
mcluyu
2018-05-25 09:18:28 +08:00
试了一下,就和选择单个通讯录联系人一样, 使用 imagePicker 选取一张图片是不需要权限的,iOS11

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/457391

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX