Facebook graph api Facebook访问令牌问题
我正在玩FacebookConnect,试图使用Facebook作为我网站的认证手段。当前我的工作流程如下所示:Facebook graph api Facebook访问令牌问题,facebook-graph-api,facebook,Facebook Graph Api,Facebook,我正在玩FacebookConnect,试图使用Facebook作为我网站的认证手段。当前我的工作流程如下所示: 转到URL 服务器检查cookies中的AccessToken 如果存在AccessToken,则自动在注释框中填写用户名/配置文件图片,并将AccessToken保留在隐藏输入中 将页面向下发送到客户端 提交时,验证访问令牌(与表单的其余部分一起提交)是否为真实用户的有效访问令牌。若有,则向数据库添加注释 刷新页面以显示新数据 如果没有访问令牌,请将用户名/配置文件图片与所需
- 转到URL
- 服务器检查cookies中的AccessToken
- 如果存在AccessToken,则自动在注释框中填写用户名/配置文件图片,并将AccessToken保留在隐藏输入中
- 将页面向下发送到客户端
- 提交时,验证访问令牌(与表单的其余部分一起提交)是否为真实用户的有效访问令牌。若有,则向数据库添加注释
- 刷新页面以显示新数据
- 如果没有访问令牌,请将用户名/配置文件图片与所需的
一起替换为
。- 将页面向下发送到客户端
- 当用户授权页面/登录facebook时,刷新页面
- (返回顶部,但这次访问令牌应该存在)
- 这安全吗?我在想,如果没有Facebook的双重身份验证(在页面生成时检查一次,在评论提交时再次检查),我将能够做什么,除了与每个客户端保持自己的会话状态,我想不出任何其他方法。这值得做吗
- 当我注销Facebook时,访问令牌是否过期?我认为应该这样,但在我手动进入Facebook并注销之后,我似乎可以继续使用相同的访问令牌来获取数据(即姓名、url等)。是不是因为我只要求公开信息,而且只有更具侵入性的权限在注销时过期
- 考虑到每个想做某事的人都必须从Facebook提供一个唯一的令牌,这应该会产生阻止CSRF的副作用,因为每个动作都可以追溯到一个有效的Facebook帐户。是这样吗
您也可以通过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