关于在 iOS 上部分第三方 APP 访问相册不需要授权也能访问的问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
dewi
V2EX    程序员

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

  •  
  •   dewi 2018 年 5 月 24 日 8126 次点击
    这是一个创建于 2788 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

    app 本身不需要访问整个资源的权限
    实际操作者是有权限的系统图库
    从结果上依然是用户明示地授权,而且总是一次性的,可以避免滥用
    mcluyu
        17
    mcluyu  
       2018 年 5 月 25 日
    试了一下,就和选择单个通讯录联系人一样, 使用 imagePicker 选取一张图片是不需要权限的,iOS11
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2629 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 02:30 PVG 10:30 LAX 18:30 JFK 21:30
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86