我一直在寻找并尝试了几个小时,但我无法理解。 我使用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();
}
提前谢谢! 此致
答案 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);
}