在Facebook应用程序设置中☞高级☞身份验证我可以选择“Web”或“Native / Desktop”作为应用程序类型。信息泡泡说:
如果您是原生iOS或Android应用,则只选择Native / Desktop, 设备或桌面应用
其实我不是那些,但我的应用程序是原生iOS应用程序以及Facebook页面选项卡 问题:我应该选择哪种应用类型?
我做了一些研究,并在Facebook Android Tutorial(疑难解答下)中找到了以下内容:
- 应用类型网络与原生/桌面。这有关系吗?:不,它没有 物。但是,建议使用“Native / Desktop”类型 你的应用。
这是什么意思没关系?这对我来说没有意义。那我为什么要选择呢?
我对SO进行了更多研究,并在this statement(Facebook支持工程师)发现了@Igy:
中找到了这个如果应用的类型设置为“Native / Desktop”,则会假设您 使用二进制文件分发应用程序的密钥,从而分发应用程序 访问令牌不受信任(PHP SDK中的'getAccessToken'将会 只有当真实用户登录时才能工作,它不能回退到app令牌)
注意:配置为Native / Desktop应用程序的应用程序不会 能够进行需要应用程序
access_token
的API调用。
我确实需要进行API调用,这需要来自我的页面选项卡应用程序的访问令牌,因此我的结论是选择“Web”作为应用程序类型,尽管我有一个使用相同应用程序ID的本机iOS应用程序页面选项卡应用。但是iOS应用程序会有任何缺点吗?
答案 0 :(得分:16)
TL; DR:使用'web',除非您将应用程序秘密放入iOS / Android二进制文件
主要区别(以及它同时提出建议时说“无关紧要”的原因)是,如果您选择“本机/桌面”模式,则假定您使用应用程序分发应用程序二进制文件秘密嵌入和app秘密被认为是不可信的。
在此配置中,使用应用程序密钥的API调用(例如,创建测试用户,代表应用程序本身进行API调用,如更改应用程序设置,发布成就等)将无效。
如果您的应用不需要使用应用密钥/应用访问令牌,则将其设置为本机/桌面会增加安全性,因为您的应用的攻击向量会减少一个。
如果您使用代码分发应用程序密钥,则必须使用该选项,否则用户可以轻松确定应用程序密钥并劫持应用程序本身。