私は Javascript 経由でログインしており、以下の方法を使用して Facebook の Cookie をチェックし、そこから signed_request を抽出しています。
function get_facebook_cookie($app_id, $app_secret) {
$access_token = null;
$expires = null;
$signed_request = (isset($_COOKIE['fbsr_' . $app_id])) ? $this->parse_signed_request($_COOKIE['fbsr_' . $app_id], $app_secret) : NULL;
if (!is_null($signed_request)) {
$url = "https://graph.facebook.com/oauth/access_token?client_id=".$app_id."&redirect_uri=&client_secret=".$app_secret."&code=$signed_request[code]";
$access_token_response = $this->getDataFromUrl($url);
parse_str($access_token_response);
$signed_request["access_token"] = $access_token;
if($expires == 0){ $signed_request["expires"] = 0; }else{ $signed_request["expires"] = time() + $expires; }
}
return $signed_request;
}
getDataFromUrl() 関数:
function getDataFromUrl($url) {
$ch = curl_init();
$timeout = 5;
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
最初の応答で、access_tokenとexpires属性を正常に取得しましたが、ページの更新または別のページへの移動のいずれかで、次の要求でそれらを失いました。
これに対する解決策またはそれを実装する別の方法はありますか? 私は何を間違っていますか?