2011-01-30 84 views
0

我用卷曲查询Facebook的FQL和发生这种情况:查询到Facebook FQL需要auth?

> curl 'https://api.facebook.com/method/fql.query' -d "query=SELECT+now()+FROM+user+WHERE+name='Barry Carter';" 

<?xml version="1.0" encoding="UTF-8"?> 
<error_response xmlns="http://api.facebook.com/1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://api.facebook.com/1.0/ http://api.facebook.com/1.0/facebook.xsd"> 
    <error_code>102</error_code> 
    <error_msg>Session key invalid or no longer valid</error_msg> 
    <request_args list="true"> 
    <arg> 
     <key>method</key> 
     <value>fql.query</value> 
    </arg> 
    <arg> 
     <key>query</key> 
     <value>SELECT now() FROM user WHERE name='Barry Carter';</value> 
    </arg> 
    </request_args> 
</error_response> 

我是否需要进行身份验证,即使找到用户?在网站上,您可以 做那认证吗?

如果我确实需要身份验证,我该如何得到它?我已阅读 http://developers.facebook.com/docs/authentication但我是否需要所有的 以进行简单的卷曲调用?如果是这样,我应该怎么做才能获得授权令牌?我需要存储cookies/etc(使用curl的-b和-c标志吗?)。

这个问题是类似于 Facebook API - fql_query, Invalid session 但我使用直卷曲,而不是PHP。

我意识到查询应该是GET,而不是POST,但我很确定这不是问题。

回答

1

是的,你需要有一个认证令牌来执行你几乎所有的查询。

如果您只是试验,手动获取一个并不难。最简单的手动操作方法是按照浏览器中指定URL链接的身份验证文档页面的“客户端流程”部分,并使用http://www.facebook.com/connect/login_success.html作为目标URL(它只是在Facebook上的虚拟页面.com,所以保证让你通过),然后从地址栏中获取访问令牌。

+0

OK,所以像 “https://www.facebook.com/dialog/oauth?client_id=YOUR_APP_ID&redirect_uri=YOUR_URL&response_type=token” 与YOUR_URL设置为http://www.facebook.com/connect/login_success HTML吗?它看起来像我仍然需要一个YOUR_APP_ID来做到这一点? – barrycarter 2011-01-30 16:53:24