完全に機能する FQL クエリがありますが、2 回目のトリガー時にエラー コード 102 が表示されます: ユーザー セッションが必要です。
私のアプリには、友達のオートコンプリート検索があります。AJAXを使用した動的ソースでjquery uiオートコンプリートを使用しています。
これは私のPHP関数です:
function fb_buscarAmigosAutocomplete($term='',$app_user=false){
$facebook = new Facebook(array(
'appId' => APP_ID,
'secret'=> APP_SECRET
));
$term=trim(strtolower($term));
//Buscar usuarios
try{
$fql = " SELECT uid,name,first_name,last_name,pic_square
FROM user
WHERE uid IN (
SELECT uid2
FROM friend
WHERE uid1=me()
)
AND strpos(lower(name),'".$term."') >=0
";
if($app_user)
$fql .= " AND is_app_user";
$fql .= " LIMIT 5";
$param = array(
'method' => 'fql.query',
'query' => $fql,
'callback' => ''
);
$result = $facebook->api($param);
} catch(FacebookApiException $e){
$error=$e->getMessage();
var_dump($e);
}
if(!empty($result)) {
$return['amigos']=$result;
$return['valido']=true;
}else
$return['valido']=false;
return $return;
}
奇妙なことに、これは過去 2 ~ 3 週間は問題なく機能していましたが、突然停止しました。「奇妙」でも、最初にトリガーされたときは機能しますが、2回目は機能しません. これは非同期であるため、トリガーされた1回目、2回目、3回目、4回目の場合にどのような違いがあるのか わかりません..
何か案は?
編集1 さらに調査した結果、回避策が得られたと思います。これは、ここで報告されたバグとここで議論されたバグが原因である可能性があります
私の回避策は、オブジェクト Facebook で取得した最初の access_token をキャッチし、それをクラスのすべてのインスタンスにアタッチすることでした。
最初の接続:
$facebook = new Facebook(array(
'appId' => APP_ID,
'secret'=> APP_SECRET
));
$uid = $facebook->getUser();
if($uid){
$_SESSION['access_token']=$facebook->getAccessToken();
}
API のその他の用途:
$facebook = new Facebook(array(
'appId' => APP_ID,
'secret'=> APP_SECRET
));
$facebook->setAccessToken($_SESSION['access_token']);
try{
$user_info = $facebook->api('/'.$uid.'?fields=id,name,first_name,last_name,email,picture');
} catch(FacebookApiException $e){
$error = $e->getMessage();
}
これまでのところ、問題は解決しています
編集 2
しませんでした...アクセス トークンが有効な英数字 +100 文字の文字列である場合があり、その場合は機能します。
48 だけの数字の文字列である場合もありますが、そうではありません... 私は本当にここで立ち往生しています