2012-07-16 68 views
15

我想用Facebook登录实现iOS应用程序。我希望我的应用的用户能够与他们的社交图形进行交互(即发布到他们的流中)。为此,我会使用Facebook iOS SDK。
当用户已经通过Facebook认证时,他们也应该能够在我的应用程序的服务器端使用一些服务。我如何根据服务器上的服务验证用户?iOS客户端,Facebook API和服务器之间的安全通信

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

+2

为什么下投票,这个问题似乎很有道理,我和显示在解释问题的一些努力。 – Till 2012-07-16 20:28:04

+0

@Till这个问题绝对有道理。也许有人不喜欢措辞。 – borisdiakur 2012-07-16 20:40:58

回答

5

UPDATE:

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


您至少有两种选择:

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

  2. 独立

    • 客户端(iOS应用)和Facebook的API和
    • 你的客户和你的服务器之间的通信。

    您的应用程序将处理过的Facebook的iOS SDK中的所有请求,Facebook的API,然后沟通所产生的数据,如各类的Facebook的ID,你的服务器。没有某种加密方式,这种方法是完全不安全的;您可以将一些加密散列函数发送到您的服务器,并使用存储在您的服务器和iOS应用程序中的密钥对其进行验证。 =>这种方法稍微容易实现,但安全性较差,因为可以通过逆向工程来窃取密钥。此外,在将应用提交到应用商店时,您必须检查“我正在使用加密”复选标记。

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

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

是的,看看这里:Facebook access token server-side validation for iPhone app

相关问题