连接到Facebook应用程序的时间超过会话

时间:2012-02-15 16:10:25

标签: php facebook facebook-graph-api

我一直在寻找并尝试了几个小时,但我无法理解。 我使用Facebook应用程序获取用户的一些信息,因此用户需要连接到应用程序。用户第一次连接时,他需要在Facebook上授予应用程序许可权。当用户再次回来时,他需要再次点击连接,但权限已经设置。

我希望用户的连接时间比会话长,因此每次访问网站时都不需要点击连接(在新会话中)。我已经阅读了很多关于offline_access等的内容,但这已被弃用,可能不是我最后需要的。我也读过2年前的一些解决方案,但它们不再起作用了。

总结一个示例:

假设用户访问我的网站,我对他一无所知。几天前他批准了我的应用程序。我希望他在没有做任何事情的情况下看到Hello和logoutlink。我开始怀疑这是否可能?

// Create our Application instance.
$facebook = new Facebook(
    array(
    'appId'  => xxxxxxxxxx,
    'secret' => xxxxxxxxxx,
)
);

// Get User ID
$fbuser = $facebook->getUser();

if($fbuser) {
    $logoutUrl = $facebook->getLogoutUrl();
    print 'Hello' . $logoutUrl;
} else {
    $loginUrl = $facebook->getLoginUrl();
}

提前谢谢! 此致

2 个答案:

答案 0 :(得分:0)

我不认为php是这种方式的... 你应该使用facebook javascript sdk(https://developers.facebook.com/docs/reference/javascript/)来记录用户..

如果用户已经登录到Facebook并且有会话(当然之前已经授权了您的应用程序)那么您已经完成了设置,否则用户必须登录到Facebook或授权您申请。

使用FB.getLoginStatus检查用户是否已登录,如果他没有,则会向他显示一个调用FB.login方法的按钮

答案 1 :(得分:0)

是的,您应该只使用Facebook来获取某些数据,然后您应该将所有数据与唯一的fb_user_id存储在您自己的数据库中,并为用户创建自己的会话!

因此,在facebook注册社交插件中,您可以在自己的数据库中创建一个用户,然后在每次登录时,您实际创建自己的会话,如果您确保安全,您可以依靠自己的会话,如果您使用任何Facebook API的东西,你的会话被关闭它会在facebook服务器上处理它,它可能会要求用户登录,如果他们从facebook注销,但大多数人甚至没有注销,所以它只是重新创建会话!

如下所示:

// Create our Application instance.
$facebook = new Facebook(
    array(
    'appId'  => xxxxxxxxxx,
    'secret' => xxxxxxxxxx,
)
);

inlcude "my_session_stuff.inc";

// Get User ID
if(!$user->user_exists){
     $fbuser = $facebook->getUser();
}else{
     $fbuser = $user;
}

if($fbuser) {
    $logoutUrl = $facebook->getLogoutUrl();
    $expires = (60*60*24*365);//expire in a year
    $user = $myownSession->log_user_out($logoutUrl);
} else {
    $loginUrl = $facebook->getLoginUrl();
    $user = $myownSession->log_user_in($getLoginUrl,$expires);
}