2012-03-16 113 views
3

我試圖使用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獲取朋友?

由於提前,

回答

2

首先,我想提請到您的通知,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

0

當我使用一個應用程序令牌與我的FQL查詢,我得到如下回應:

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

看起來你應該嘗試使用用戶訪問令牌。事實上,當我從我的應用程序令牌來測試用戶身份驗證令牌切換,它的工作原理。 : -/

相關問題