当我使用 Facebook 的 JS SDK 来验证我的应用程序(使用 FB.init 方法)时,我只需要我的应用程序 ID。它不需要我的应用程序密钥和/或应用程序密钥。但是,当我使用 PHP SDK 时,它需要我的应用程序密码(至少我用来学习的示例同时使用了应用程序 ID 和应用程序密码)。
是否安全并推荐使用 JS SDK 进行身份验证?JS SDK 的身份验证流程是如何发生的?
谢谢, 维内特
当我使用 Facebook 的 JS SDK 来验证我的应用程序(使用 FB.init 方法)时,我只需要我的应用程序 ID。它不需要我的应用程序密钥和/或应用程序密钥。但是,当我使用 PHP SDK 时,它需要我的应用程序密码(至少我用来学习的示例同时使用了应用程序 ID 和应用程序密码)。
是否安全并推荐使用 JS SDK 进行身份验证?JS SDK 的身份验证流程是如何发生的?
谢谢, 维内特
我正在研究身份验证的安全性——我认为自从你问这个 q 以来事情已经发生了变化,所以当你问这个问题时,这个信息可能不正确。
新版 JS SDK 使用 OAuth 2.0。这是有据可查的 - 查看OAuth 2.0 站点了解详细信息。
关于 SDK 是否需要应用程序机密的问题 - 我对此有点困惑。在应用程序服务器端,库表明 JS SDK 使用应用程序秘密签署 cookie(请参阅facebook-python sdk中的函数 get_user_from_cookie ) - 但是,我完全不清楚 JS SDK 如何知道应用程序秘密。我猜它可以在身份验证过程中直接与FB对话时从FB动态获取它,但我不确定。
(编辑:我认为 JS SDK 直接从 FB 获取使用应用程序秘密签名的 cookie - JS SDK 永远不知道应用程序秘密)。
没有完全回答你的问题,但可能会更清楚地了解它是如何工作的。
另一个需要注意的问题是不要将您从客户端获得的 FB 用户对象用于服务器端的任何内容。这是因为有人很容易编写一个脚本,而不是调用 fb.api '/me' 会向您的应用程序发送一个带有另一个用户 ID 的“假” JSON 用户对象。如果您正在对用户进行任何类型的服务器端处理,那么我认为您确实需要进行某种服务器端身份验证。