2010-02-01 59 views
0

我有一个基于网站的游戏,有登录帐户,我想集成到Facebook(不是脸书连接,我想使用iframe画布页)。如何制作一个网站作为一个网站和一个Facebook应用程序?

我的问题是如何验证用户,以及如何检查用户是来自Facebook还是直接来自网站。

我一直在玩require_login()使用PHP库。我主要担心的是,我如何验证来自Facebook的GET参数确实来自Facebook?如果我可以这样做,那么我可以将他们的Facebook会话ID和UID作为登录凭证存储在会话中。

我的另一个担心是GET变量可能会作为reffer传递给外部链接。

终于...我发现在某些浏览器中,使用require_login()时,它突破了iframe并进入永恒的状态,不断地向URL添加额外的authtoken。

希望有人能帮助

回答

0

是的,你可以创建一个应用程序,独立工作,以及Facebook的应用程序。对于Facebook,您将不得不使用Facebook的iframe method在Facebook上工作。

+0

我意识到这一点......我已经得到了那么多,我对事物的认证方面更感兴趣,但是谢谢 – Mark 2010-02-01 14:41:25

+0

对不起,我没有看到链接...我会读一读 – Mark 2010-02-01 14:44:10

+0

@Mark :没问题的老兄,谢谢:) – Sarfraz 2010-02-01 14:52:48

0

您可以通过verifying the signature来验证来自Facebook的请求,其方式与Facebook检查API请求来自您的应用程序的方式相同。使用PHP客户端库,您可以使用Facebook类的validate_fb_params()方法自动执行此操作。

请记住,会话密钥是暂时的,因此用户将需要通过您的应用程序与Facebook进行身份验证,否则密钥会在一小时内过期。如果您希望将会话密钥存储在cookie中,您也可能遇到Safari的第三方cookie问题,并且您还需要针对其他一些浏览器/隐私设置组合的小型隐私。类似于:

<?php 
header('P3P: CP="CAO PSA OUR"'); 
?> 

in an include would do it。

是的:会话密钥可能会传递到外部网站,如引用属性。这只是平台目前的安全缺陷之一。唯一的解决方法是通过删除引用链接的处理程序重定向所有外部点击,或者在页面加载时重定向以剥离fb_sig_ss参数。

+0

这看起来像一个很好的替代第三方cookie问题 http://www.foobots.net/breakouts.html – Mark 2010-02-01 22:04:29