Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.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 connect php-保持登录状态_Php_Facebook_Facebook Php Sdk - Fatal编程技术网

Facebook connect php-保持登录状态

Facebook connect php-保持登录状态,php,facebook,facebook-php-sdk,Php,Facebook,Facebook Php Sdk,我正在尝试将facebook connect与php结合使用,即使会话被破坏,用户仍要保持登录到我的站点,这一点很重要 我已经从SDK运行了这个示例。在这种情况下,用户必须在每次会话中再次登录。使用该方法不会发生这种情况,用户将永远保持登录状态 我想问为什么会这样?第一种方法是否可以让用户始终登录 顺便说一下,我想我需要PHP+JS组合,因为我不想在登录时刷新页面。这是真的吗 谢谢…这两个示例都应该让用户保持登录状态。必要的登录数据存储在cookie中并重复使用 问题可能是什么:我发现即使用户登

我正在尝试将facebook connect与php结合使用,即使会话被破坏,用户仍要保持登录到我的站点,这一点很重要

我已经从SDK运行了这个示例。在这种情况下,用户必须在每次会话中再次登录。使用该方法不会发生这种情况,用户将永远保持登录状态

我想问为什么会这样?第一种方法是否可以让用户始终登录

顺便说一下,我想我需要PHP+JS组合,因为我不想在登录时刷新页面。这是真的吗


谢谢…

这两个示例都应该让用户保持登录状态。必要的登录数据存储在cookie中并重复使用

问题可能是什么:我发现即使用户登录,“$user=$facebook->getUser();”调用有时也会失败。我的建议是不要依赖于那个调用,而是跳到下面的try/catch块,然后从那里设置用户

试一试{ $user_profile=$facebook->api('/me'); $user=$user\u profile['user\u id']; }捕获(FacebookApiException$e){ $user_profile=false; $user=null; }

因为这看起来更可靠


如果做不到这一点,你可以自己控制一切。步骤如下:

  • 告诉Javascript不要使用cookies
  • 登录用户并使用“getAccessToken”函数获取登录用户的访问令牌。将其存储在您自己姓名/持续时间的cookie中
  • 下次加载页面时,检查您创建的访问令牌cookie,并使用“setAccessToken”,然后使用相同的try/catch块。如果用户返回invalid,则清除您自己的cookie,因为这意味着用户已使accesstoken无效
  • 您不应该需要最后一种方法(除非在会话/设备之间共享令牌,或者希望脱机访问),因为这正是facebook SDK所做的——但它确实可以帮助您更好地控制和理解hte过程


    最后,您可以通过JavaScript执行所有的login/getAccessToken/store cookie方法,这样用户就可以登录并记住它,而无需刷新页面。只需在auth.login上检查适当的操作即可记住cookie并更改页面内容-don;不要重新加载页面

    下次用户刷新页面/返回站点时,PHP将读取cookie。记得在注销时清除cookie


    因此,您可以随心所欲,是的。

    这两个示例都应该让用户保持登录状态。必要的登录数据存储在cookie中并重复使用

    问题可能是什么:我发现即使用户登录,“$user=$facebook->getUser();”调用有时也会失败。我的建议是不要依赖于那个调用,而是跳到下面的try/catch块,然后从那里设置用户

    试一试{ $user_profile=$facebook->api('/me'); $user=$user\u profile['user\u id']; }捕获(FacebookApiException$e){ $user_profile=false; $user=null; }

    因为这看起来更可靠


    如果做不到这一点,你可以自己控制一切。步骤如下:

  • 告诉Javascript不要使用cookies
  • 登录用户并使用“getAccessToken”函数获取登录用户的访问令牌。将其存储在您自己姓名/持续时间的cookie中
  • 下次加载页面时,检查您创建的访问令牌cookie,并使用“setAccessToken”,然后使用相同的try/catch块。如果用户返回invalid,则清除您自己的cookie,因为这意味着用户已使accesstoken无效
  • 您不应该需要最后一种方法(除非在会话/设备之间共享令牌,或者希望脱机访问),因为这正是facebook SDK所做的——但它确实可以帮助您更好地控制和理解hte过程


    最后,您可以通过JavaScript执行所有的login/getAccessToken/store cookie方法,这样用户就可以登录并记住它,而无需刷新页面。只需在auth.login上检查适当的操作即可记住cookie并更改页面内容-don;不要重新加载页面

    下次用户刷新页面/返回站点时,PHP将读取cookie。记得在注销时清除cookie


    所以你可以做你想做的事,是的。

    为了让用户始终登录,你可以使用过期时间更长的cookie(你自己的cookie,而不是fb设置的cookie)$user=$facebook->getUser();获取有关用户登录状态的cookie。如果过期,则用户不再登录。您可以将自己的cookie设置为更长的过期时间。要使用户始终登录,您可以使用具有更长过期时间的cookie(您自己的cookie,而不是fb设置的cookie)$user=$facebook->getUser();获取有关用户登录状态的cookie。如果过期,则用户不再登录。您可以为自己的cookie设置更长的过期时间。