如何使用FQL按位置过滤Facebook事件

时间:2013-06-02 12:42:09

标签: facebook facebook-graph-api facebook-fql

如何通过FQL使用位置来装配Facebook事件 恩。我希望得到所有将在埃及举办的活动

SELECT name FROM event 
WHERE strpos(lower(name), 'Egypt') >= 0

https://developers.facebook.com/tools/explorer?fql=SELECT%20name%0AFROM%20event%20%0AWHERE%20strpos%28lower%28name%29%2C%20%27Egypt%27%29%20%3E%3D%200

但是当我尝试使用上面的Query时,它会为我返回:

  

您的陈述不可转化。 WHERE子句必须包含   可索引的列。这些列在链接的表中标有*   来自http://developers.facebook.com/docs/reference/fql

注意:我希望得到按事件名称包含的公共事件。

3 个答案:

答案 0 :(得分:1)

通过他们所做的更改,使用app access_token的查询不能 使用上面的查询:

SELECT name,location FROM event WHERE contains('egypt')

该查询适用于会话令牌(用户access_tokens),但应用access_token 它只是返回:

{
  "error": {
  "message": "(#200) Must have a valid access_token to access this endpoint", 
  "type": "OAuthException", 
  "code": 200
}

这对我来说很令人惊讶,因为我仍然可以在事件表上使用除app以外的任何其他查询以及app access_token

更新: 在查看他们的文档后,我发现您只能使用app访问令牌进行非常有限的查询: https://developers.facebook.com/docs/reference/api/search/

我最终做的是我使用以下内容从我的用户获取会话access_token作为page_manager

https://www.facebook.com/dialog/oauth?client_id={MY_CLIENT_ID}&scope=manage_pages&redirect_uri={MY_REDIRECT_URI}&response_type=token

上述查询会返回您的access_token,您可以使用它来成功运行查询。它基本上做的是它将你的access_token作为散列归因

附加到你身上
{MY_REDIRECT_URI}#access_token={MY_ACCESS_TOKEN}

如果您想解析服务器上的访问令牌,这对您不起作用,因为散列属性不会随请求一起发送到您的服务器。您可以做的是将type=web_server附加到Facebook的上述请求中。在这种情况下,access_token将作为名为code

的请求参数返回

答案 1 :(得分:0)

您最接近的是使用contains谓词

SELECT name,location FROM event WHERE contains('egypt')

这会在文本

中为您提供一些包含“埃及”的事件

答案 2 :(得分:0)

也许有点晚了,但这link可能会有所帮助。