2012-04-18 30 views
3

當我使用URL https://graph.facebook.com/me/friends?access_token=訪問我的朋友列表...我可以看到我的朋友列表。我也可以通過編程來實現。訪問Facebook Graph API中的好友列表時出現HTTP 400錯誤

現在,當我將我的任何朋友的ID代入上述URL中的「我」並將URL粘貼到瀏覽器中時,我可以看到我朋友的朋友。我無法以編程方式執行此操作,因爲它給了我一個HTTP 400錯誤。

有誰知道爲什麼這可能通過粘貼的URL而不是編程?

+0

響應中的確切錯誤信息是什麼? – ThdK 2012-04-18 07:11:19

+0

我看不到響應,但它給了我一個java.io異常。我使用以下代碼來讀取URL:ByteArrayOutputStream baos = new ByteArrayOutputStream(); URLConnection con = url.openConnection(); con.setConnectTimeout(20000); con.setReadTimeout(20000); InputStream is = con.getInputStream(); int r; ((r = is.read())!= -1){0} { baos.write(r); } return new String(baos.toByteArray()); – 2012-04-18 07:13:43

+0

您確定在使用瀏覽器時以及以編程方式嘗試時使用的是相同的ID嗎?你能告訴我一些你正在使用的請求代碼嗎? – ThdK 2012-04-18 07:15:16

回答

3

使用facebook api無法獲得「朋友的朋友」。

例如,使用Graph API Explorer嘗試簡單的/me/friends,它應該可以正常工作。 然後,把IDS存在之一,嘗試FRIEND_ID /朋友一樣,你應該得到這樣的:

{ 
    "error": { 
    "message": "(#604) Can't lookup all friends of FRIEN_ID. Can only lookup for the logged in user or the logged in user's friends that are users of your app.", 
    "type": "OAuthException", 
    "code": 604 
    } 
} 

錯誤本身是非常簡單的,並解釋到底是什麼問題。 至於爲什麼這意味着你的400錯誤代碼不清楚。


編輯

你不能看到「朋友的朋友」,在瀏覽器爲好,它爲你工作(可能)的原因是用戶()你檢查的朋友for(USER_ID/friends)安裝了訪問令牌所屬的應用程序,從您訪問該網址的方式來看,我假設該應用程序是「Test_console」。

如何檢查?從URL(USER_ID/friends?access_token = xxxxx)複製訪問令牌,轉到Facebook Debugger並將該令牌粘貼到文本字段中,然後單擊「調試」,它會顯示有關應用程序的信息。

您檢查它的用戶可能已經安裝了該應用程序,如果您爲其他用戶檢查該應用程序,當您遇到沒有安裝該應用程序的用戶時,將會收到該錯誤。

我希望這能爲你澄清。

0

我收到了正在使用應用程序的朋友(有限)的朋友。我有同樣的問題。雖然回答問題已經很晚了,但它會幫助某人。這就是回答這個問題的原因。

我們可以得到那些是應用程序用戶的朋友的朋友。

$ fb_id =需要朋友朋友的用戶標識。

試試這個fql查詢。

$查詢=「選擇UID,名字,work_history FROM用戶WHERE UID IN(SELECT UID2從相知WHERE UID1 IN(SELECT UID FROM用戶WHERE UID IN (SELECT UID2從相知WHERE UID1 = $ fb_id)和is_app_user = 1))「;

它需要以下條件:

  1. 你的朋友需要使用的應用程序。
  2. 來自應用程序read_stream,publish_stream,publish_checkins的權限。