php - Facebook 登录客户端和服务器端

标签 php ios facebook facebook-graph-api

我正在将 Facebook 登录集成到 iOS 应用程序中。该应用程序依赖于用 PHP 编写的 API,目前将其用于默认登录过程(电子邮件和密码)。 我已成功添加 Facebook SDK 并使用它从 Facebook 检索用户数据,但我陷入了这个安全问题:如果我相信来自应用程序的数据是真实的 Facebook 用户数据,有人可以开始发送 API 端点一些 Ajax 调用,在最好的情况下,虚假用户会扰乱我的数据库(因为我通过 Facebook 登录过程添加新用户)。

我正在考虑以下解决方案:从 iOS 获取用户数据以在本地使用,除了用户的 Facebook ID 之外什么都不发送到服务器。由于两个 SDK 都应该将数据存储在 cookie 中,因此我应该能够从服务器检索当前登录的用户数据,并根据来自应用程序的用户 ID 检查用户 ID。如果一切匹配,我可以使用我检索到的服务器端的任何数据将新用户添加到数据库(或简单地让他登录),并且相同的数据应该出现在客户端。

问题是,在服务器端,我总是从 $facebook->getUser() 方法调用中得到 0。我可能错过了一些东西。想法?

PS > 当我使用具有相同 PHP Api 的 Javascript SDK 时,会发生类似的问题,但前提是 Javascript 应用程序在本地计算机上运行。如果它在我的临时服务器上运行,一切正常。 编辑:这与域名有关。

编辑2:我没有放置任何代码,但您可以假设最简单的示例:

$fb = new Facebook(array(
     "addId" => "myAppId",
     "secret" => "myAppSecret",
     "cookie" => true
));

$user = $fb->getUser(); // Returns 0

最佳答案

我找到了一个可以接受的解决方案(即使不是最优的恕我直言)。

我没有向我的 API 提供用户的 Facebook ID,而是向它提供访问 token ,这是我通过 iOS 应用程序中的 [session.accessTokenData accessToken] 调用获得的。

在 PHP 方面,我只调用 $facebook->setAccessToken($token) 以便对 $facebook->api() 的任何后续调用进行身份验证。如果身份验证 token 有效,则一切正常;如果不是,则会抛出一个错误,这正是应该发生的事情。

重要提示:如果您想这样做,请不要忘记使用从应用程序到服务器的安全连接!

关于php - Facebook 登录客户端和服务器端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19478089/

相关文章:

ios - Xcode 无法使具有标识符的单元格出列

php - wordpress 联系表格 7 不发送 html 内容

PHP header 重定向未按预期工作

php - MySQL:获取所有行进行搜索?

ios - iOS 6 和 iOS 7 中存档的值不同

ios - UIWebView 中的 Facebook 评论框高度不正确

php - "Notice: Undefined variable"、 "Notice: Undefined index"、 "Warning: Undefined array key"和 "Notice: Undefined offset"使用 PHP

jquery - 使用 Jquery 设置内联 URL

iOS5 Facebook 整合

ios - "facebook login_sucess.html"未通过 iOS 中的 Graph API 提供访问 token