0

Stack Overflow 社区可以为我检查一下吗?

我正在做一个涉及两个组件的项目:一个 iOS 应用程序和一个移动网站。这是一款将与 Facebook 进行大量交互的产品。该网站托管在 Heroku 上。

在 iOS 领域,我的意图是使用 Facebook iOS SDK 进行身份验证,然后在 https://[myappname].herokuapp.com 使用用户的访问令牌访问 Web API。由于 Heroku 在使用 herokuapp.com 域时提供搭载 SSL,并且用户无论如何都不会看到此 URL,我认为这很好。这样请求就被加密了,所以访问令牌应该是安全的。

从移动网站,用户将使用 Facebook 登录,此时我的理解是访问令牌将在他们的 cookie 中,然后我的服务器可以访问它们,而无需在每个请求中来回交换它。通过这种推理,在我看来,我可以坚持使用网站的常规未加密 http:// URL(因此可以使用我的自定义域名,而无需为 Heroku 的 SSL 端点附加组件支付月费)。

这一切有意义吗?我将是第一个承认我对这些东西的理解非常需要升级的人。但现在我只是在寻找可以告诉我,“不,你完全忽视/误解了 XYZ”或“是的,这就是通常的做法”的人。

4

2 回答 2

2

Facebook 建议您不要依赖他们的 cookie 格式。他们表示,cookie 是“一个实施细节”,他们可以随时调整,恕不另行通知。您不应直接从 cookie 中直接访问令牌或其他用户信息。我个人在尝试直接从 cookie 中获取用户信息时遇到过一些糟糕的经历,主要是由于时间问题——它们并不总是在那里,或者在我预期的时候更新。

在客户端,您应该通过 FB.getLoginStatus 或其他返回访问令牌的方法从 Javascript SDK 获取访问令牌,然后将其发布到您的服务器。这确实应该使用 ssl 来完成,否则您很容易受到网络数据包嗅探的影响,黑帽可以获取令牌并能​​够使用用户授予您的应用程序的所有权限。

还有一个服务器端选项,它访问 Facebook 服务器上的 ssl 端点以返回访问令牌。

参考:

“Cookie 是一个实现细节”: https ://developers.facebook.com/blog/post/624/ 身份验证文档: https ://developers.facebook.com/docs/authentication/

于 2012-06-27T15:39:17.643 回答
1

通过 Facebook 的网站登录通过 HTTP 完全可以正常工作。

于 2012-06-27T15:17:00.610 回答