如何做fql.multiquery使用Facebook php sdk 3.0 [英] how to do fql.multiquery using facebook php sdk 3.0
问题描述
我正在从2.x PHP SDK迁移到3.x.所有的多次调用都被打破,我无法弄清楚如何解决。
使用oauth javascript的Facebook连接登录工作,并允许当前用户的数据被访问服务器端。我认为这验证我的访问令牌是合法的。
我尝试过以下代码变体,每次都会收到错误:
旧方式:
$ id = $ fb-> getUser(); // RETURNS A VALID USER ID
$ fql ='{friends:SELECT uid FROM user WHERE has_added_app = 1 and uid IN(SELECT uid2 FROM friend WHERE uid1 ='。$ id。'),配置文件:SELECT uid,name,pic_square FROM user WHERE uid IN(SELECT uid FROM #friends)}';
$ response = $ fb-> api(array('method'=>'fql.multiquery','queries'=> $ fql));
出现错误:PHP致命错误:未捕获异常:102:需要用户会话\\ n抛出
假设有新的方式:
$ id = $ fb-> getUser(); // RETURNS A VALID USER ID
$ fql ='{friends:SELECT uid FROM user WHERE has_added_app = 1 and uid IN(SELECT uid2 FROM friend WHERE uid1 ='。$ id。'),配置文件:SELECT uid,name,pic_square FROM user WHERE uid IN(SELECT uid FROM #friends)}';
$ response = $ fb-> api(array('method'=>'fql.query','query'=> $ fql));
提供错误:PHP致命错误:未捕获异常:601:解析器错误:意外的{'at位置0
非常感谢任何帮助理解如何使用新的PHP SDK进行多重查询。
$对于您的特定查询,请使用新 fql
图API端点,只有一个查询: $ user = $ facebook-> getUser();
if($ user){
try {
$ fql = urlencode(SELECT uid,name,pic_square FROM user WHERE is_app_user = 1 AND uid IN(SELECT uid2 FROM friend WHERE uid1 = $用户));
$ response = $ facebook-> api(/ fql?q = {$ fql});
} catch(FacebookApiException $ e){
echo'< pre>'。htmlspecialchars(print_r($ e,true))。'< / pre>
$ user = null;
}
}
还可以使用 is_app_user
而不是已弃用的 has_added_app
一个!
I'm in the process of migrating from the 2.x PHP SDK to 3.x. All of the multiquery calls are broken and I haven't been able to figure out how to resolve.
The facebook connect login using oauth javascript works and allows data for the current user to be accessed server side. I assume this verifies my access token is legit.
I've tried the following code variations and get errors each time:
Old way:
$id = $fb->getUser(); // RETURNS A VALID USER ID
$fql = '{ "friends" : "SELECT uid FROM user WHERE has_added_app=1 and uid IN (SELECT uid2 FROM friend WHERE uid1 = '.$id.')", "profiles" : "SELECT uid, name, pic_square FROM user WHERE uid IN (SELECT uid FROM #friends)"}';
$response = $fb->api( array('method' => 'fql.multiquery','queries' => $fql));
Gives the error: PHP Fatal error: Uncaught Exception: 102: Requires user session\n thrown
Assumed New Way of doing it:
$id = $fb->getUser(); // RETURNS A VALID USER ID
$fql = '{ "friends" : "SELECT uid FROM user WHERE has_added_app=1 and uid IN (SELECT uid2 FROM friend WHERE uid1 = '.$id.')", "profiles" : "SELECT uid, name, pic_square FROM user WHERE uid IN (SELECT uid FROM #friends)"}';
$response = $fb->api( array('method' => 'fql.query','query' => $fql));
Gives the error: PHP Fatal error: Uncaught Exception: 601: Parser error: unexpected '{' at position 0
Any help understanding how to do a multiquery using the new PHP SDK is appreciated.
For your particular query, use the new fql
Graph API end-point and in only one query:
$user = $facebook->getUser();
if ($user) {
try {
$fql = urlencode("SELECT uid, name, pic_square FROM user WHERE is_app_user = 1 AND uid IN (SELECT uid2 FROM friend WHERE uid1 = $user)");
$response = $facebook->api("/fql?q={$fql}");
} catch (FacebookApiException $e) {
echo '<pre>'.htmlspecialchars(print_r($e, true)).'</pre>';
$user = null;
}
}
Also use the is_app_user
instead of the deprecated has_added_app
one!
这篇关于如何做fql.multiquery使用Facebook php sdk 3.0的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!