php sdk と javascript は、Julian H. Lam が言ったこととは正反対です。実際、これらは一緒に使用するために構築されています。
php sdkのドキュメントでは、これを見つけることができます:
Facebook SDK for JavaScript との統合
PHP SDK を Facebook SDK for JavaScript と組み合わせて使用すると、クライアントとサーバー間でユーザー セッションをシームレスに共有できます。ユーザーが Facebook でログインし、アプリを承認した場合、JavaScript SDK はユーザー セッションを取得して、これを Cookie に保存します。この Cookie は PHP SDK が開発者の介入なしに読み取ります。
この機能を有効にするには、JS SDK を埋め込んで初期化するときに、FB.init() に渡されるオブジェクトのステータス パラメータと Cookie パラメータの両方を true に設定してください。
そして、基本的なロジックを使用することで、これはすべて理にかなっています。クライアント側では、リスナーを作成してユーザーのステータスを取得できます(ログインしている場合、権限を付与している場合、ログアウトしている場合)、サーバー側でこの種のアクションを実行すると、まったく意味がありません。
したがって、私からのアドバイスは、Javascript SDK を使用して、前に述べたようなユーザー イベントを処理し、ユーザーがいいね! をしたり、フィード ダイアログを使用して投稿を共有した場合など、ユーザーのアクションからの応答を処理することです。など。php SDK では、有効なユーザーがいるかどうかを確認するだけです。これを行うと、javascript SDK でログイン プロセスを処理した後、クライアント側とサーバー側で同じ Cookie を共有しているためです$fb_id = $facebook->getUser()
(もちろん、PHP SDK を初期化した後)、有効なユーザーを持っていることがわかったので、ユーザーの facebook ID を取得します。PHP SDK を使用して、ユーザーに関する情報をクエリしたり、ユーザーに代わって投稿したりできます。
Cookie をサポートする JavaScript SDK の適切な読み込みの例を次に示します。
<div id="fb-root"></div>
<script>
window.fbAsyncInit = function() {
// init the FB JS SDK
FB.init({
appId : 'YOUR_APP_ID', // App ID from the app dashboard
channelUrl : '//WWW.YOUR_DOMAIN.COM/channel.html', // Channel file for x-domain comms
status : true, // Check Facebook Login status
xfbml : true, // Look for social plugins on the page
cookie : true
});
// Additional initialization code such as adding Event Listeners goes here
};
// Load the SDK asynchronously
(function(d, s, id){
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {return;}
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_US/all.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
そして、これはあなたを啓発するためのサーバー側の簡単なコードです:
require_once("facebook.php");
$config = array();
$config[‘appId’] = 'YOUR_APP_ID';
$config[‘secret’] = 'YOUR_APP_SECRET';
$config[‘fileUpload’] = false; // optional
$facebook = new Facebook($config);
try {
$user_profile = $facebook->api('/me','GET');
$user_name = $user_profile['name'];
$user_email = $user_profile['email'];
} catch(FacebookApiException $e) {
// If the user is logged out, you can have a
// user ID even though the access token is invalid.
// In this case, we'll get an exception, so we'll
// just ask the user to login again here.
}
PS: このサーバー側のコードは、ユーザーがスコープ email の権限を既に付与している場合にのみ機能します