我想通过Facebook登录实现iOS应用。我希望我的应用程序的用户能够与他们的社交图表进行交互(即发布到他们的流)。为此,我将使用Facebook iOS SDK 当用户已经通过Facebook进行身份验证时,他们也应该能够在我的应用程序的服务器端使用某些服务。如何根据服务器上的服务验证用户?
在我的iOS应用程序中,我可以使用iOS Facebook SDK查询访问令牌(对于我的Facebook应用程序)。我应该将该访问令牌与facebook用户ID一起发送到我的服务器吗?服务器可以验证访问令牌是否有效吗?或者只应该我的iOS应用程序与Facebook API进行通信?服务器可以发布到我的Facebook墙上,还是应该通过iOS应用程序完成?
答案 0 :(得分:5)
<强>更新强>
Facebook现在提供安全文档/清单: https://developers.facebook.com/docs/facebook-login/security/
您至少有两个选择:
将访问令牌发送到您的服务器并处理对Facebook的所有请求 使用该令牌(如果令牌无效,则会出现错误而且只是 把它传递给客户)。 =&GT;安全但有点复杂。
分开
之间的沟通您的应用将通过Facebook iOS SDK处理对Facebook API的所有请求,然后将结果数据(如所有类型的Facebook ID)传送到您的服务器。没有某种加密,这种方法是完全不安全的;您可以向服务器发送一些加密哈希函数,并使用存储在服务器和iOS应用程序上的密钥对其进行验证。 =&GT;这种方法(有点)更容易实现,但由于密钥可以通过逆向工程被盗,因此安全性较低。此外,在将应用程序提交到应用程序商店时,您必须检查“我正在使用加密”复选标记。
这实际上取决于您愿意承担多少风险,您提出何种要求,您拥有何种服务等等。
服务器可以验证访问令牌是否有效吗?
是的,请看这里:Facebook access token server-side validation for iPhone app