index.php にアクセスすると、すべてが正常に機能し、セッション変数に acces_token が表示されます。
ただし、リンクをクリックして新しいページに移動し、(新しいページで) index.php に戻るリンクをクリックすると、access_token が appId から始まるはるかに短いトークンに変更されます。 .
(編集: この短いトークンがこれであることを発見しました: appid|appsecret)
index.php の正確なコピーにリンクしようとしましたが、同じことが起こります。新しい Facebook インスタンスが作成されていないかのようです...なぜ新しい access_token が作成されないのですか?
以下は私のコードです。アプリにユーザーをログインさせていないことに気付くでしょう。これは、この部分が Javascript SDK を介して別のページで行われるためです。
私は何時間も探していました...アドバイスをよろしくお願いします。
index.php
<?php
include "config.php";
require "ok.php";
?>
<br/><br/>
<a href="link.php">Link.</a>
<br/><br/>
<?php
$user = $facebook->getUser();
$userInfo = $facebook->api("/$user");
?>
<?php d($user); ?>
<strong>PHP Session</strong>
<?php d($_SESSION); ?>
?>
ok.php
<?php
$fbconfig['appid' ] = "###";
$fbconfig['secret'] = "###";
$user = null;
try{
include_once "facebook.php";
}
catch(Exception $o){
echo '<pre>';
print_r($o);
echo '</pre>';
}
$facebook = new Facebook(array(
'appId' => $fbconfig['appid'],
'secret' => $fbconfig['secret'],
'cookie' => true,
));
function d($d){
echo '<pre>';
print_r($d);
echo '</pre>';
}
?>
config.php
<?php
session_start();
//We log to the DataBase
mysql_connect('...', '...', '...');
mysql_select_db('...');
?>