0

graph.fql を使用してマルチクエリを作成しようとしていますが、動作させることができず、ドキュメントに例がありません。走ろうとしている

'user_sex': 'SELECT sex FROM user WHERE uid=me()'

最初にそして次に

'friends': 'SELECT uid, name FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me()) AND NOT (sex IN #user_sex) ORDER BY name')

2番目ですが、その方法についての手がかりがありません。

2 つの別々のクエリを作成する必要がありますか?

4

2 に答える 2

1

Pythonfacebook-sdkライブラリは、複数の FQL クエリを実行できます。まず、クエリの辞書を文字列にキャストする必要があります。

import facebook

query = {
    "user_sex": "SELECT sex FROM user WHERE uid=me()",
    "friends": "SELECT uid, name, sex FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me()) AND not (sex in (select sex from #user_sex))  ORDER BY name"
}

graph = facebook.GraphAPI(access_token)
return graph.fql(str(query))
于 2014-04-07T03:49:09.363 に答える
0

クエリを少し変更しました。ここで試すことができます。なければ「アクセストークンを取得」をクリック。

{
"user_sex": "SELECT sex FROM user WHERE uid=me()",
"friends": "SELECT uid, name, sex FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me()) AND not (sex in (select sex from #user_sex))  ORDER BY name"
}

また、実際に複数のクエリを作成する必要はありません。これを使用できます(テストしてください):

SELECT uid,name, sex FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1=me()) AND not (sex in (SELECT sex FROM user WHERE uid=me())) order by name

アプリからリクエストを行うには、データを適切にエンコードする必要があります。たとえば、この両方のクエリの URL は次のようになります。

https://graph.facebook.com/fql?q=%7B%22user_sex%22:%22SELECT%20sex%20FROM%20user%20WHERE%20uid=me()%22,%22friends%22:%22SELECT%20uid,%20name,%20sex%20FROM%20user%20WHERE%20uid%20IN%20(SELECT%20uid2%20FROM%20friend%20WHERE%20uid1%20=%20me())%20AND%20not%20(sex%20in%20(select%20sex%20from%20%23user_sex))%20%20ORDER%20BY%20name%22%7D&access_token=token
https://graph.facebook.com/fql?q=SELECT+uid,+name,+sex+FROM+user+WHERE+uid+IN+(SELECT+uid2+FROM+friend+WHERE+uid1+=+me())+AND+not+(sex+in+(SELECT+sex+FROM+user+WHERE+uid=me()))+order+by+name&access_token=token
于 2013-06-26T13:02:35.577 に答える