iOS客户端,Facebook API和服务器之间的安全通信

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

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

更新:

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


你至less有两个select:

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

  2. 分开之间的沟通

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

    您的应用程序将通过Facebook iOS SDK处理对Facebook API的所有请求,然后将结果数据(如所有types的Facebook ID)传送到您的服务器。 没有某种encryption方式,这种方法是完全不安全的。 你可以发送一些encryption哈希函数到你的服务器,并用存储在你的服务器和iOS应用上的密钥来validation它。 =>这种方法稍微容易实现,但安全性较差,因为密钥可以通过逆向工程被窃取。 此外,当您将应用程序提交到应用程序商店时,您必须检查“我正在使用encryption”复选标记。

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

服务器可以validation访问令牌是否有效吗?

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