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

Pet*_*isu 16 security iphone facebook facebook-graph-api ios

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

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

bor*_*kur 5

更新:

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


您至少有两个选择:

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

  2. 分开之间的沟通

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

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

这实际上取决于您愿意承担多少风险,您提出了什么样的要求,您拥有什么样的服务等等.

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

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