ここで説明されているのと同じ問題があります: Facebook ログイン: JavaScript と PHP SDK を組み合わせるには?
その間 (この質問の解決策は 1 年前に提案されました)、facebook と javascript の php-sdk が更新されましたが、それでも同じ問題が発生します。
これが私のセットアップです:
JS:
FB.init({
appId: '<MyAppID>',
status: true,
cookie: true,
xfbml: true,
channelUrl: '<MyUrl>'
});
PHP:
self::$facebook = new Facebook(array(
'appId' => self::APP_ID,
'secret' => self::SECRET,
'cookie' => true,
'sharedSession' => true //i really don't know if this has any effect
));
$this->accessToken = self::$facebook->getAccessToken();
if ($this->accessToken) {
self::$facebook->setExtendedAccessToken($this->accessToken);
}
$this->populateThis();
関数 populateThis() が作業を行う必要があります。
$uid = self::$facebook->getUser();
if ($uid) {
$result = self::$facebook->api(array(
'method' => 'fql.query',
'query' => 'SELECT uid, name, email FROM user WHERE uid = me()'
));
if (is_array($result) && isset($result[0])) {
foreach ($result[0] as $key => $value){
$this->$key = $value;
}
$this->isLogged = true;
}else{
$this->isLogged = false;
}
}
しかし、 getUser() も失敗します...
現在、この問題はGoogle Chromeでのみ発生していると言わざるを得ません。これをオペラ、Firefoxで実行しようとしましたが、それらはうまく反応しました。