Facebook FQL查询(#601)解析器错误:位置58处出现意外的“#”

Phi*_*Woe 5 facebook-fql facebook-graph-api facebook-php-sdk

这是我第一次自己找不到错误的解决方案。我尝试执行fql查询,但是我得到了一个非常奇怪的响应:/

FQL:

{
  "477215715631180":
      "SELECT name, start_time, location, creator, pic_square 
       FROM event WHERE eid=477215715631180",
  "creator_477215715631180":
      "SELECT name FROM profile WHERE id IN (SELECT creator FROM #477215715631180)"
 }
Run Code Online (Sandbox Code Playgroud)

响应:

(#601) Parser error: unexpected '#' at position 58.
Run Code Online (Sandbox Code Playgroud)

位置58:

... FROM event WHERE ...
Run Code Online (Sandbox Code Playgroud)

API资源管理器。

有没有人解决?

cpi*_*lko 4

问题似乎是您不能将子查询与保留的 FQL 项命名相同。您在此处使用 id 作为查询指示符。Facebook 不喜欢这样。

我可以通过在子查询名称的开头添加“q”来运行您的查询:

{
  "q477215715631180":
      "SELECT name, start_time, location, creator, pic_square 
       FROM event WHERE eid=477215715631180",
  "creator_477215715631180":
      "SELECT name FROM profile WHERE id IN (SELECT creator FROM #q477215715631180)"
}
Run Code Online (Sandbox Code Playgroud)

对于您的解析器错误,Facebook 的消息未引用整个 FQL 多重查询。Facebook 单独解析每个查询,并仅针对其正在解析的当前查询抛出错误。所以在你的例子中,第一个查询解析得很好,然后这个错误来自你的creator_查询,发生#在位置 58。