【问题标题】:Get friends using FQL with an application access token使用 FQL 和应用程序访问令牌结交朋友
【发布时间】:2012-04-01 16:44:59
【问题描述】:

我正在尝试使用 Facebook 查询语言 (FQL) 来获取安装了我的应用程序的朋友列表。在验证我的应用并获取我的应用访问令牌后,我正在执行以下查询(注意我使用 Java 和 RestFB 运行):

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"

同样,如果我尝试将 FQL 与图形 API 一起使用(如下所示),我会遇到同样的错误。

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 使用应用访问令牌来获取好友列表,但我可以通过 Graph API 检索好友?

提前致谢,

【问题讨论】:

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


    【解决方案1】:

    首先我想提醒您,fql.query 来自 REST API,并且将被弃用。

    FB 建议今后使用 GRAPH API..

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

    因此您可以继续使用 FQL 并使用 GRAPH 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 更改内联的信息集合。

    【讨论】:

    • 感谢您的提示。我已更新我的问题以将 FQL 与图形 API 一起使用。虽然仍然得到同样的错误:(
    【解决方案2】:

    当我在 FQL 查询中使用应用令牌时,我收到以下响应:

    "message": "请求此资源需要用户访问令牌。"

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

    【讨论】:

      最近更新 更多