我自己使用 Facebook PHP SDK。我根本不想使用 JS SDK。
因为 getUser(); 即使用户未登录,SDK 也可以返回用户 ID,我选择使用 try/catch 语句来检查用户是否已登录。
try
{
$me = $CI->facebook->api('/me');
$CI->our_fb['is_fb']='YES';
echo "hello";
}
catch(FacebookApiException $e)
{
echo "catch";
}
此语句包含在我所有文件的全局包含文件中(为简单起见)。
因此,根据具体情况,我会生成一个 Facebook 登录 URL。预期的功能是用户登录 Facebook,授权应用程序,返回到登录 URL 中设置的重定向 URI,此时将执行 try 语句,并设置 $CI->our_fb['is_fb']。
然而,这并没有发生。
如果用户已经登录 Facebook 并且该应用程序已获得授权,则它可以完美运行。成功
如果用户没有登录到 Facebook,一旦重定向,变量就不会被设置。失败
如果用户已登录,但在重定向后未授权应用程序,则未设置变量。失败。
在后两种情况下,如果您只是刷新页面,则设置变量 - SUCCESS。然而,刷新页面是不必要的/毫无意义的额外工作。
我的问题是,如果您需要登录 FB/或授权应用程序,例如您第一次使用 FB 登录时,您有额外的不必要的刷新,我不知道为什么。
我怀疑这与 cookie/会话有关?哪个保存了我认为不会同时自动返回/传递给 SDK 的访问令牌?
有人有什么想法吗?