0

我如何使用 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

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

您的语句不可索引。WHERE 子句必须包含一个可索引的列。这些列在从http://developers.facebook.com/docs/reference/fql链接的表格中标有 *

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

4

2 回答 2

1

通过他们所做的更改,使用应用程序 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
}

这让我感到惊讶,因为我仍然可以使用任何其他查询,而不是包含在带有应用程序 access_token 的事件表中

更新:查看他们的文档后,我发现您只能将应用访问令牌用于非常有限的查询集: 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

于 2014-01-20T05:17:19.633 回答
0

您可以获得的最接近的是使用contains谓词

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

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

于 2013-06-06T16:42:58.803 回答