Facebook应用程序类型:哪一个可以选择移动和网络?

时间:2012-07-23 14:01:15

标签: ios facebook facebook-apps facebook-authentication facebook-access-token

在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令牌)

最后我在Facebook documentation

中找到了这个
  

注意:配置为Native / Desktop应用程序的应用程序不会   能够进行需要应用程序access_token的API调用。

我确实需要进行API调用,这需要来自我的页面选项卡应用程序的访问令牌,因此我的结论是选择“Web”作为应用程序类型,尽管我有一个使用相同应用程序ID的本机iOS应用程序页面选项卡应用。但是iOS应用程序会有任何缺点吗?

1 个答案:

答案 0 :(得分:16)

TL; DR:使用'web',除非您将应用程序秘密放入iOS / Android二进制文件

主要区别(以及它同时提出建议时说“无关紧要”的原因)是,如果您选择“本机/桌面”模式,则假定您使用应用程序分发应用程序二进制文件秘密嵌入和app秘密被认为是不可信的。

在此配置中,使用应用程序密钥的API调用(例如,创建测试用户,代表应用程序本身进行API调用,如更改应用程序设置,发布成就等)将无效。

如果您的应用不需要使用应用密钥/应用访问令牌,则将其设置为本机/桌面会增加安全性,因为您的应用的攻击向量会减少一个。

如果您使用代码分发应用程序密钥,则必须使用该选项,否则用户可以轻松确定应用程序密钥并劫持应用程序本身。