代码之家  ›  专栏  ›  技术社区  ›  borisdiakur Faheel Khan

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

  •  19
  • borisdiakur Faheel Khan  · 技术社区  · 13 年前

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

    如果您是本机iOS或Android应用程序,则仅选择本机/桌面, 设备或桌面应用程序

    事实上,我不是其中之一,但我的应用程序是一个原生iOS应用程序和一个Facebook页面选项卡。
    问题: 我应该选择哪种应用程序类型?


    我做了一些研究,在 Facebook Android Tutorial (在“疑难解答”下):

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

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

    我对SO做了更多的研究,发现 this statement 通过 @Igy (Facebook的开发支持工程师):

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

    最后我在 Facebook documentation 以下为:

    笔记 :配置为本机/桌面应用程序的应用程序将不会 能够进行需要应用程序的API调用 access_token

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

    1 回复  |  直到 9 年前
        1
  •  19
  •   Igy    13 年前

    TL;DR:除非你将应用程序秘密放入iOS/Android二进制文件,否则请使用“web”

    主要区别(也是它在给出建议的同时说“没关系”的原因)是,如果你选择“本地/桌面”模式,则假设你分发嵌入了应用程序机密的应用程序二进制文件,并且该应用程序机密被认为是不可信的。

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

    如果你的应用程序不需要使用app secret/app访问令牌,那么将其设置为native/desktop会增加安全性,因为你的应用少了一个攻击向量。

    如果你在代码中分发应用程序机密,你必须使用该选项,否则用户可以很容易地确定应用程序机密并劫持应用程序本身。

    推荐文章