0

Facebook用のPHP SDKを使用しています。

require_once 'facebook-sdk/facebook.php';

session_start();

$facebook = new Facebook(array(
    'appId' => 'app_id',
    'secret' => 'app_secret',
    'cookie' => true,
));

$facebook->getUser();

if($user){
   // do stuff
}else{
   //redirect to app login
}

このコードの後に​​、クエリ文字列を使用してこの同じページを指すリンクがページに表示されます。

何かのようなもの<a href="/index.php?step=2">Continue</a>

しかし、このリンクをクリックすると、$user は "0" になります。これは、Safari と IE でのみ発生します。アプリによって設定された Cookie を確認すると、これらのブラウザーには存在しません。

何か案は?

4

1 に答える 1

2

ユーザーIDは変わらないので、GETで送っても問題ないでしょうか?

<a href="/index.php?step=2&id=<? echo $user ?>">Continue</a>

次に、スクリプトの先頭で、 $user を取得した後、次のようにします。

if($_GET['step'] == 2){
   $user = $_GET['id'];
}

本当に Cookie を保持する必要がある場合は、これをスクリプトの先頭に追加できます。これは最初の行である必要があります。

header('P3P: CP="CAO COR CURa ADMa DEVa OUR IND ONL COM DEM PRE"');

また、この質問を確認することもできます

iframe Facebook アプリケーションと Cookie [Internet Explorer]

IE Facebook アプリ iFrame でセッションが失われる

ヘッダーソリューションに関連しています。

于 2012-12-16T01:52:59.677 に答える