V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
dewi
V2EX  ›  程序员

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

  •  
  •   dewi · 2018-05-24 11:53:58 +08:00 · 7326 次点击
    这是一个创建于 2156 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

    app 本身不需要访问整个资源的权限
    实际操作者是有权限的系统图库
    从结果上依然是用户明示地授权,而且总是一次性的,可以避免滥用
    mcluyu
        17
    mcluyu  
       2018-05-25 09:18:28 +08:00
    试了一下,就和选择单个通讯录联系人一样, 使用 imagePicker 选取一张图片是不需要权限的,iOS11
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3879 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 04:22 · PVG 12:22 · LAX 21:22 · JFK 00:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.