Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Facebook graph api Facebook访问令牌问题_Facebook Graph Api_Facebook - Fatal编程技术网

Facebook graph api Facebook访问令牌问题

Facebook graph api Facebook访问令牌问题,facebook-graph-api,facebook,Facebook Graph Api,Facebook,我正在玩FacebookConnect,试图使用Facebook作为我网站的认证手段。当前我的工作流程如下所示: 转到URL 服务器检查cookies中的AccessToken 如果存在AccessToken,则自动在注释框中填写用户名/配置文件图片,并将AccessToken保留在隐藏输入中 将页面向下发送到客户端 提交时,验证访问令牌(与表单的其余部分一起提交)是否为真实用户的有效访问令牌。若有,则向数据库添加注释 刷新页面以显示新数据 如果没有访问令牌,请将用户名/配置文件图片与所需

我正在玩FacebookConnect,试图使用Facebook作为我网站的认证手段。当前我的工作流程如下所示:

  • 转到URL
  • 服务器检查cookies中的AccessToken
  • 如果存在AccessToken,则自动在注释框中填写用户名/配置文件图片,并将AccessToken保留在隐藏输入中
    • 将页面向下发送到客户端
    • 提交时,验证访问令牌(与表单的其余部分一起提交)是否为真实用户的有效访问令牌。若有,则向数据库添加注释
    • 刷新页面以显示新数据
  • 如果没有访问令牌,请将用户名/配置文件图片与所需的
    一起替换为
    • 将页面向下发送到客户端
    • 当用户授权页面/登录facebook时,刷新页面
    • (返回顶部,但这次访问令牌应该存在)
所以我有几个问题:

  • 这安全吗?我在想,如果没有Facebook的双重身份验证(在页面生成时检查一次,在评论提交时再次检查),我将能够做什么,除了与每个客户端保持自己的会话状态,我想不出任何其他方法。这值得做吗

  • 当我注销Facebook时,访问令牌是否过期?我认为应该这样,但在我手动进入Facebook并注销之后,我似乎可以继续使用相同的访问令牌来获取数据(即姓名、url等)。是不是因为我只要求公开信息,而且只有更具侵入性的权限在注销时过期

  • 考虑到每个想做某事的人都必须从Facebook提供一个唯一的令牌,这应该会产生阻止CSRF的副作用,因为每个动作都可以追溯到一个有效的Facebook帐户。是这样吗


我无法回答您所有的问题,但我可以告诉您,从政策角度来看,在页面的隐藏字段中使用访问令牌是有风险的,特别是如果您的页面可以被任何第三方代码(如Google Analytics或AdSense)读取。Facebook会因此而惩罚你,因为它正在向第三方泄露用户识别数据。Facebook用户ID以明文形式存在于访问令牌中。Facebook有自动扫描这些东西的程序,如果你的应用程序向第三方泄露用户ID,它将自动禁止你的应用程序。

我不能回答你所有的问题,但我可以告诉你,从政策角度来看,在你的页面上隐藏一个访问令牌是有风险的,特别是如果你的页面可以被任何第三方代码读取,比如谷歌分析或AdSense。Facebook会因此而惩罚你,因为它正在向第三方泄露用户识别数据。Facebook用户ID以明文形式存在于访问令牌中。Facebook有自动扫描这些信息的程序,如果你的应用向第三方泄露用户ID,它会自动禁止你的应用。

你为什么不直接使用Facebook Javascript SDK来检测他们是否当前登录Facebook?这还将使访问令牌在Javascript中可用,以便您可以对API进行客户端调用。
您也可以通过Facebook设置的会话cookie访问相同的访问令牌服务器端。

为什么不使用Facebook Javascript SDK来检测他们当前是否登录Facebook?这还将使访问令牌在Javascript中可用,以便您可以对API进行客户端调用。
您也可以通过Facebook设置的会话cookie访问相同的访问令牌服务器端。

Hmm但是访问令牌不是已经在cookie中了吗,而且任何能够获取我看到的HTML的第三方不能也获取cookie吗?我想,如果将访问令牌保留在HTML之外,让服务器在每次请求时检查cookies,那么我将不会花费任何费用。第三方将无法访问cookies-只有您的用户可以访问他们自己的cookie,但cookies中不已经存在访问令牌,难道没有任何第三方谁可以抓取HTML我看到也抓取饼干?我想,如果将访问令牌保留在HTML之外,让服务器在每次请求时检查cookies,那么我将不会花费任何成本。第三方将无法访问cookies-只有您的用户可以访问他们自己的cookie。主要原因是,无论是好是坏,我希望在服务器端尽可能多地执行这些操作。因此,在调用Facebook之后,我不想让大量javascript在客户端用DOM做聪明的事情,我只想将身份验证内容(在本例中是访问令牌)传递给服务器,让服务器做所有的思考,并让它在第一次尝试时吐出正确的(定制的)页面。我真的不喜欢javascript DOM操作;任何不平凡的事情都会很快让人困惑。一旦Facebook的Javascript SDK设置了cookie,Facebook的PHP SDK就可以(通过cookie)拾取同一个会话——然后您可以从PHP SDK(或表单Python或您使用的任何服务器端语言)进行所有API调用-应该不需要自己手动传递访问令牌。主要原因是,不管是好是坏,我想在服务器端尽可能多地做这些事情。因此,在调用Facebook之后,我不想让大量javascript在客户端用DOM做聪明的事情,我只想将身份验证内容(在本例中是访问令牌)传递给服务器,让服务器做所有的思考,并让它在第一次尝试时吐出正确的(定制的)页面。我真的不喜欢javascript DOM操作;任何不平凡的事情都会很快让人困惑。一旦Facebook的Javascript SDK设置了cookie,Facebook的PHP SDK就可以(通过cookie)拾取同一个会话-然后您可以从PHP SDK(或表单Python或您使用的任何服务器端语言)进行所有API调用-应该不需要手动传递访问tok