18

在 Facebook 应用程序设置☞ 高级☞ 身份验证中,我可以选择“Web”或“Native/Desktop”作为应用程序类型。信息泡泡说:

如果您是原生 iOS 或 Android 应用程序、设备或桌面应用程序,请仅选择 Native/Desktop

实际上我不是这些,但我的应用程序是原生 iOS 应用程序以及 Facebook 页面选项卡。
问题:我应该选择哪种应用类型?


我做了一些研究,并在Facebook Android 教程(在疑难解答下)中发现了以下内容:

  • 应用程序类型 Web 与本机/桌面。有关系吗?: 不,没关系。但是,建议您为您的应用使用“Native/Desktop”类型。

没关系是什么意思?这对我来说没有意义。那我为什么要选择呢?

我对 SO 进行了更多研究,发现@Igy(Facebook的开发支持工程师)发表了以下声明:

如果应用程序的类型设置为“本机/桌面”,则假定您使用二进制文件分发了应用程序的密钥,因此应用程序访问令牌不受信任(并且 PHP SDK 中的“getAccessToken”仅在真实用户登录时才有效中,它不能回退到应用令牌)

最后我在Facebook 文档中找到了这个:

注意:配置为本地/桌面应用程序的应用程序将无法进行需要应用程序的 API 调用access_token

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

4

1 回答 1

17

TL;DR:除非您将应用程序机密放入 iOS / Android 二进制文件中,否则请使用“网络”

主要区别(以及它说“没关系”同时还给出建议的原因)是,如果您选择“本机/桌面”模式,则假定您分发的应用程序二进制文件嵌入了应用程序机密,并且应用程序机密被视为不受信任。

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

如果您的应用程序不需要使用应用程序密钥/应用程序访问令牌,则将其设置为本机/桌面会在一定程度上提高安全性,因为您的应用程序的攻击向量更少。

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

于 2012-07-23T14:06:57.590 回答