同じアプリを使用して友達を取得するための次のバッチ リクエストは機能しません。
var search = {batch: [
{
'name' : 'getFriends',
'relative_url': 'method/fql.query?query=SELECT+uid,+first_name,+name,+pic_square,+pic_small+FROM+user+WHERE+is_app_user=1+and+uid+IN+(SELECT+uid2+FROM+friend+WHERE+uid1=' + userId + ')'
},
{
'method': 'get',
'relative_url': '{result=getFriends:$.data[*].uid}/news.reads/article',
}
]};
次のコードは、バッチ リクエストを実行します。
FB.api('/', 'post', search, function(response) {
console.log(response);
});
しかし、最初の検索ではnullが返されます。クエリの何が問題になっていますか?
バッチ リクエストに関する facebook のドキュメントによると、*relative_url* は
(...) relative_url (graph.facebook.com の後の URL の部分)
ここから取得します。
そこで、コードの最初のブロックを次のように変更しました。
var search = {batch: [
{
'name' : 'getFriends',
'method' : 'GET',
'relative_url': 'method/fql?q=SELECT uid, first_name, name, pic_square, pic_small FROM user WHERE is_app_user=1 and uid IN (SELECT uid2 FROM friend WHERE uid1=me())'
},
{
'method': 'GET',
'relative_url': '{result=getAmigos:$.data[*].uid}/news.reads/article'
}
]};
バッチの最初のブロックのrelative_urlは Facebook の Open Graph API ツールで機能しますが、JS では http コードは 500 で、メッセージ本文は次のとおりです。
{
"error": {
"message": "Graph batch API does not allow REST API method fql",
"type": "FacebookApiException",
"code": 3
}
}
しかし、API バッチ リクエストのドキュメントでは、fql クエリが許可されています。ドキュメントが古い?バグを開く必要がありますか?
PS: バッチ リクエストのない fql は
SELECT uid, first_name, name, pic_square, pic_small
FROM user WHERE is_app_user=1
and uid IN (SELECT uid2 FROM friend WHERE uid1 = me())