我有一个基于网站的游戏,我想要整合到Facebook中的登录帐户(不是facebook连接,我想使用iframe画布页面)。
我的问题是如何验证用户身份,以及如何检查用户是来自Facebook还是直接来自网站。
我一直在使用PHP库来使用require_login()。我主要担心的是如何验证来自facebook的GET参数确实来自facebook?如果我可以这样做,那么我可以将他们的facebook会话ID和Uid存储在会话中作为登录凭据。
我的另一个担心是GET变量可能会作为外部链接的传递来传递。
最后......我发现在某些浏览器中,使用require_login()它会突破iframe并进入一个永恒的外观,不断向URL添加额外的authtoken。
希望有人可以提供帮助
答案 0 :(得分:0)
是的,您可以创建一个独立运作的应用程序以及Facebook应用程序。对于Facebook,你必须使用facebook的iframe method在facebook下工作。
答案 1 :(得分:0)
您可以通过verifying the signature验证来自Facebook的请求,就像Facebook检查API请求来自您的应用程序一样。使用PHP客户端库,您可以使用validate_fb_params()
类的Facebook
方法自动执行此操作。
请记住,会话密钥是临时的,因此用户将需要通过您的应用程序与Facebook进行身份验证,否则密钥将在一小时内到期。如果您希望将会话密钥存储在cookie中,您可能还会遇到Safari的第三方cookie问题,并且您还需要一个紧凑的隐私,以用于其他一些浏览器/隐私设置组合。类似的东西:
<?php
header('P3P: CP="CAO PSA OUR"');
?>
在包含中会做到。
是的:会话密钥可以像在referrer属性中一样传递给外部站点。这只是该平台目前存在的安全漏洞之一。唯一的方法是通过删除引用者的处理程序重定向所有外部点击,或者在页面加载时重定向以删除fb_sig_ss
参数。