Php 如何获得长寿命的Facebook会话?
从去年开始,我一直在开发一个Facebook应用程序。在Facebook 2012年12月发生变化之前,它运行良好。但现在我在Facebook上遇到了一个问题。 我已将旧SDK替换为新SDK: 避免尝试重用已用过的授权代码 因此,当授权码用完时,用户会话将从我的站点过期。(之后我得到授权错误) 用户每5-6分钟就会从我的应用程序中注销一次,因此我必须再次将用户重定向到loginurl并刷新页面,这对我的站点不好,因为我在所有链接上使用调用 我已经看到一些应用程序在12月的变化后也运行良好。(例如,Wrapp.com)。Wrapp.com不会在身份验证代码过期后重定向用户。登录10分钟后,我也可以使用Wrapp.com在Facebook上发帖,而无需重定向。 Wrapp.com如何处理身份验证?解决方案是什么?您有两种方法:Php 如何获得长寿命的Facebook会话?,php,facebook,facebook-graph-api,facebook-php-sdk,Php,Facebook,Facebook Graph Api,Facebook Php Sdk,从去年开始,我一直在开发一个Facebook应用程序。在Facebook 2012年12月发生变化之前,它运行良好。但现在我在Facebook上遇到了一个问题。 我已将旧SDK替换为新SDK: 避免尝试重用已用过的授权代码 因此,当授权码用完时,用户会话将从我的站点过期。(之后我得到授权错误) 用户每5-6分钟就会从我的应用程序中注销一次,因此我必须再次将用户重定向到loginurl并刷新页面,这对我的站点不好,因为我在所有链接上使用调用 我已经看到一些应用程序在12月的变化后也运行良好。(例如
使用PHP SDK避免使用Ajax和Iframe页面使会话过期
经过大量的研究和测试,如果调用的页面被多次加载,那么在iframe或加载了canvas或page tab的Ajax页面中使用phpsdk“3.2.2”将清除应用程序的会话 示例: 您的页面选项卡在其自身包含的PHPSDK中加载一个iframe,并且您的用户与iframe交互。第二个页面加载时的iframe将清除当前应用程序会话 解决方案: 从应用程序中的Ajax和iframe页面中删除PHP SDK,并改用
如果应用程序中的iframe页面需要用户身份验证信息,建议在用户登录页面选项卡/画布或上载用户身份验证时创建cookie或会话。在需要用户查看或交互的地方使用此切换内容。注意,您的令牌应默认为2小时。如果它在几分钟内到期,这意味着您没有在ajax页面上设置访问令牌,它正在清除会话。非常感谢@Shawn的回答。但我有一个问题。我必须在ajax页面上获取用户的好友列表,这需要用户访问令牌。如何在ajax页面上获取用户访问令牌,而我不能包含facebook sdk?我可以将用户访问令牌存储到会话中,并在使用curl调用api时使用它吗?如果在主页上设置了访问令牌,ajax页面应该能够使用其当前会话调用它$access_token=$_会话['fb_YourAppIdHere_access_token'];