2

我想我不完全理解 facebook OAuth-API 处理身份验证的方式。据我了解,它的工作原理基本上是这样的(客户端是 Android 手机,我的服务器是标准 LAMP 设置): fb auth http://i.imagebanana.com/img/hvlsb2dp/fbAuth.png

现在的问题是,客户端当然可以通过向我的服务器提交错误的用户 ID 来伪造第 3 步 - 例如,如果我的服务器响应请求http://server.com/getConfidentialData.php?fbID=%FBID%,并且用户设法获取其他人的 fb-userID,他可以将其放入请求中,他将获得属于其他人的数据。

如果我使用PHP-SDK,它如何知道我的用户是否登录了Android-App?

这是它应该工作的方式,还是我错过了什么?

谢谢,大卫。

4

2 回答 2

1

唯一真正的解决方案:

当您拥有一个带有私人用户数据的服务器并且并非所有内容都在 Facebook 上时,您需要进行服务器端登录,一旦您了解了流程,这并不难实现。

检查 Facebook 上的图表并遵循他们在本示例中提供的指南,您就可以开始了。

https://developers.facebook.com/docs/howtos/login/server-side-login/

于 2013-01-24T09:58:41.633 回答
0

我有完全相同的问题......同样的感觉,但既然你没有任何答案,我会带你去看看我发现的。

我设计了以下解决方案:

我向我的服务器发送 fb 用户 ID、他的电子邮件(以在我的服务器中识别他)和他的访问令牌(通过 https 的所有内容,就好像它是一个特殊的登录调用一样)。

从我的服务器上我尝试访问令牌,如果这个有效(*)我也在我的服务器中登录和更新/注册用户。

(*) 我首先定义了工作,就好像我可以访问用户的电子邮件一样,但是具有该权限的任何其他应用程序都可以模拟我的用户,所以现在我延长了令牌寿命,这仅在令牌来自我的应用程序时才有效。

我希望这会有所帮助,同时,如果有人能真正解决这个问题并向我们解释其他人如何避免这种情况,我将不胜感激。

干杯!

于 2012-12-19T15:27:25.790 回答