【问题标题】:How Can I filter Facebook Events Using Location by FQL如何通过 FQL 使用位置过滤 Facebook 事件
【发布时间】:2013-06-02 12:42:09
【问题描述】:

我如何通过 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

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

【问题讨论】:

  • 正如消息所说,您必须使用一些可索引的列,而名称不是。

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


【解决方案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 的请求参数返回

【讨论】:

    【解决方案2】:

    你能得到的最接近的是使用contains谓词

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多