16

我想实现一个带有 Facebook 登录的 iOS 应用程序。我希望我的应用程序的用户能够与他们的社交图进行交互(即发布到他们的信息流)。为此,我将使用 Facebook iOS SDK。
当用户已经通过 Facebook 进行身份验证时,他们也应该能够在我的应用程序的服务器端使用一些服务。如何根据服务器上的服务验证用户?

在我的 iOS 应用程序中,我可以使用 iOS Facebook SDK 查询访问令牌(用于我的 Facebook 应用程序)。我应该将该访问令牌与 facebook 用户 ID 一起发送到我的服务器吗?服务器能否验证访问令牌是否有效?还是应该只有我的 iOS 应用程序与 Facebook API 通信?服务器可以发布到我的 Facebook 墙上,还是应该只通过 iOS 应用程序完成?

4

1 回答 1

5

更新:

Facebook 现在提供安全文档/清单: https ://developers.facebook.com/docs/facebook-login/security/


你至少有两个选择:

  1. 将访问令牌发送到您的服务器并使用该令牌处理对 Facebook 的所有请求(如果令牌无效,您会收到错误并将其传递给客户端)。=> 安全但(有点)复杂。

  2. 分离之间的通信

    • 您的客户端(iOS 应用程序)和 Facebook API 以及
    • 您的客户端和服务器。

    您的应用程序将通过 Facebook iOS SDK 处理对 Facebook API 的所有请求,然后将生成的数据(如各种 Facebook id)传送到您的服务器。如果没有某种加密,这种方法是完全不安全的;您可以向您的服务器发送一些加密哈希函数,并使用存储在您的服务器和 iOS 应用程序上的密钥对其进行验证。=> 这种方法(有点)更容易实现,但安全性较低,因为密钥可以通过逆向工程被盗。此外,在将您的应用提交到应用商店时,您必须选中“我正在使用加密”复选标记。

这实际上取决于你愿意承担多大的风险,你提出什么样的要求,你有什么样的服务等等。

服务器能否验证访问令牌是否有效?

是的,看这里:iPhone 应用程序的 Facebook 访问令牌服务器端验证

于 2012-07-16T19:37:52.543 回答