使用FQL与应用程序的访问令牌

问题描述:

我试图使用Facebook查询语言(FQL)得到的朋友,谁已经安装了我的应用程序列表中获取的朋友。验证我的应用程序,并让我的应用程序的访问令牌后,我执行下面的查询(请注意我用的Java和RestFB运行):使用FQL与应用程序的访问令牌

https://api-read.facebook.com/method/fql.query?query=SELECT+uid+FROM+user+WHERE+uid+IN+%28SELECT+uid2+FROM+friend+WHERE+uid1%3D<userId>%29+AND+is_app_user%3D1&access_token=<appAccessToken>&format=json 

这将返回一个错误:

..."error_code":102,"error_msg":"Requires user session" 

同样,如果我尝试使用图形API的FQL(如下所示),我得到相同的错误。

https://graph.facebook.com/fql?q=SELECT+uid+FROM+user+WHERE+uid+IN+%28SELECT+uid2+FROM+friend+WHERE+uid1%3D<userId>%29+AND+is_app_user%3D1&access_token=<appAccessToken>&format=json 

所以我试图用一种预期它的工作原理令牌的用户访问。我寻觅了公平位和跨越这来了: Facebook 'Friends.getAppUsers' using Graph API

其中有一些非常好的建议,领着我去尝试以下查询:

https://graph.facebook.com/<userId>/friends?fields=installed&access_token=<appAccessToken>&format=json 

而这个返回的好友列表与应用程序的访问令牌。

这使我对我的问题。为什么我无法使用与FQL应用程序访问令牌来获取好友列表,但我可以用图形API获取朋友?

由于提前,

首先,我想提请到您的通知,fql.query是REST API和将被弃用。

FB推荐使用图形API前进..

重要提示:FQL是不会被弃用,但只使用REST API的fql.query方法将被弃用。

所以你可以继续使用FQL和使用图形API执行FQL。

详情请阅读http://developers.facebook.com/docs/reference/fql/

示例代码FB

//get user access_token 
    $token_url = 'https://graph.facebook.com/oauth/access_token?client_id=' 
    . $app_id . '&redirect_uri=' . urlencode($my_url) 
    . '&client_secret=' . $app_secret 
    . '&code=' . $code; 
    $access_token = file_get_contents($token_url); 

    // Run fql query 
    $fql_query_url = 'https://graph.facebook.com/' 
    . '/fql?q=SELECT+uid2+FROM+friend+WHERE+uid1=me()' 
    . '&' . $access_token; 
    $fql_query_result = file_get_contents($fql_query_url); 
    $fql_query_obj = json_decode($fql_query_result, true); 

    //display results of fql query 
    echo '<pre>'; 
    print_r("query results:"); 
    print_r($fql_query_obj); 
    echo '</pre>'; 

我知道,我并没有真正回答你的问题,但是这仅仅是一个信息的收集关于哪些可以用来准备着与FB更改保持一致。

+0

谢谢你的提示。我更新了我的问题,在图API中使用FQL。仍然得到相同的错误,虽然:( – 2012-03-19 01:59:02

当我使用一个应用程序令牌与我的FQL查询,我得到如下回应:

"message": "A user access token is required to request this resource."

看起来你应该尝试使用用户访问令牌。事实上,当我从我的应用程序令牌来测试用户身份验证令牌切换,它的工作原理。 : -/