由于 Facebook 在过去一年中所做的所有更改,很多事情都发生了变化。网上有一些解决方案,但它们不再起作用。(像这样:使用 PHP 或 JavaScript Facebook SDK,我怎样才能让用户登录到我的网站?)
我已经在我的网站上使用 PHP facebook SDK 实现了 facebook 连接。问题在于已经批准我的应用程序并且也登录到他们的 Facebook 的用户。在这种情况下,我希望他们自动登录,而无需再次按下连接按钮。我想有一种方法可以使用 php+js 来做到这一点,但我找不到方法,相信我我尝试了几件事。问题是php用户检查
$user = $facebook->getUser();
不承认 facebook 会话,我想也许我可以用 JS 触发它。所以我厌倦了在 JS 中为页面添加此代码,并且 ALRETS 正在工作,说用户已连接但没有会话传递给 PHP,因此 PHP SDK 无法识别用户已连接:
<div id="fb-root"></div>
<script>
window.fbAsyncInit = function() {
FB.init({
appId : '<?=FACEBOOK_APP_ID?>',
status : true, //
cookie : true, //
xfbml : true, //
oauth : true
});
// Additional initialization code here
//--------> this isn't need to work its only a check
FB.getLoginStatus( function(response) {
//console.log(response);
if (response.status === 'connected') {
var accessToken = response.authResponse.accessToken;
alert(accessToken);
} else if (response.status === 'not_authorized') {
//login function
} else {
//login function
}
}, true);
FB.Event.subscribe('auth.authResponseChange', function(response) {
//console.log('The status of the session changed to: '+response.status);
alert(response.status);
});
//--------> END OF CHECK!!
};
// Load the SDK Asynchronously
(function(d){
var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
if (d.getElementById(id)) {return;}
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "//connect.facebook.net/<?=$fb_api_lang?>/all.js#xfbml=1";
ref.parentNode.insertBefore(js, ref);
}(document));
</script>
如果有人找到解决此问题的方法并可以分享,将不胜感激。