これについてたくさんのスレッドを読みましたが、答えがないか、与えられた答えがうまくいきません。
Facebook アプリがまだ承認されていない場合は、承認を求める次のコードがあります。承認されると、同じページにリダイレクトされますが、今回は承認を求める必要はありません。
コードは完全にユーザー認証を求めます...私が望むとおりに動作しますが、アプリがリロードされると、$user は常に 0 に設定されます。
これが私のコードです:
//Get PHP SDK
require_once 'facebook.php';
// Create our Application instance.
$facebook = new Facebook(array(
'appId' => 'xxxxxxxxxxxxxxx',
'secret' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
'cookie' => true
));
// Get User ID
$user = $facebook->getUser();
if ($user) {
try {
$user_profile = $facebook->api('/me');
echo "logged in and authenticated";
} catch (FacebookApiException $e) {
error_log($e);
$user = null;
}
}
// Ask for authorisation
if(!$user) {
$login_url = $facebook->getLoginUrl(
array(
'canvas' => 1,
'fbconnect' => 0,
'scope' => 'email,publish_stream',
'redirect_uri' => 'myurl - same as Site URL in app basic settings'
)
);
echo "<script> top.location.href='" . $login_url . "'</script>";
}
}
ユーザーがアプリを承認した後、再度承認を求めることはないので、承認が機能したと仮定していますが、なぜ$facebook->getUser()
0 を返すのですか?
リダイレクト後の URL には、'state' と 'code' の 2 つのクエリ文字列パラメーターがあります。関連性はありますか?私は彼らと何かをすべきですか?私が知る限り、最新の Facebook SDK をダウンロードしたので、これを機能させる方法がわかりません。
注: AJAX 経由で上記のコードを呼び出しています。