フェイスブックが過去1年間に行ったすべての変更以来、多くのことが変更されています。Web上にいくつかの解決策がありますが、それらはもはや機能しません。(これのように:PHPまたはJavaScript Facebook SDKを使用して、ユーザーを自分のWebサイトにログインさせ続けるにはどうすればよいですか?)
私のウェブサイトにFacebookConnectとPHPfacebookSDKを実装しました。問題は、私のアプリをすでに承認していて、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>
誰かがこの問題の解決策を見つけて共有できれば、大いに感謝されます。