2013-02-10 70 views
1

我試圖在不使用PHP SDK的情況下使用Facebook應用程序返回用戶的朋友列表。 我設法返回用戶名稱,性別等,而不使用授權碼。我現在試圖返回一個名單是用戶的朋友,所有我設法做到這一點是打印數組,我似乎只能打印名稱,因爲它的名稱,性別等不同的佈局我設法做呼應:Facebook API - 返回朋友列表(PHP數組)

$user->name 

但是當我嘗試,對於好友列表它不工作和犯規回聲任何東西,我只是想知道是否有人知道我怎麼會去這樣做?

使用的print_r我得到以下幾點:

Array(
[0] => Array ([name] => Friend's name [id] => x) 
[1] => Array ([name] => Friend's name [id] => x) 
[2] =>....) 

直到所有的朋友都已經上市。


{ "name": "Name", 
    "hometown": { 
     "id": "Hometown_id", 
     "name": "Hometown" 
    }, 
    "id": "Friend_id" } 

以上是每個陣列的結構,我認爲一個潛在的問題是,不是每個人都有故鄉集這可能是爲什麼我收到一個foreach錯誤?

+0

您是否擁有適當的權限? – asifrc 2013-02-10 04:47:05

+0

是的,即時通訊使用oauth_token,我可以打印整個數組,但我只想要名稱 – thrash 2013-02-10 04:49:57

+0

爲什麼你不只是以正常的方式訪問數組,你在PHP中做什麼? – Daedalus 2013-02-10 05:02:16

回答

1

鑑於該數組結構,它非常簡單(在PHP中)來得到你想要的。我建議閱讀arrays上的php手冊。

剛剛嘗試這樣的事:

foreach ($array as $inner_array) { 
    echo $inner_array['name'] . "<br />"; 
} 

除此之外,這將是...

echo $your_array[0]['name']; 
echo $your_array[1]['name']; 

等等等等..第四

更新:

你現在看的不是一個數組,而是一個JavaScript對象。它被稱爲JSON:Javascript對象表示法。

您需要一個特殊的解析器將其解釋爲一個數組:json_decode(),它附帶php大於或等於5.2.0。要使數組關聯,必須傳遞第二個參數布爾值true。否則,它默認爲false。用法示例:

$json = '{ "name": "Name", 
    "hometown": { 
     "id": "Hometown_id", 
     "name": "Hometown" 
    }, 
    "id": "Friend_id" }'; 

$json_arr = json_decode($json,true); 

foreach ($json_arr as $key => $var) { 
    if (!is_array($var)) { 
     if ($key == 'name') { 
      echo $var . "<br />"; 
     } 
    } 
} 

更新2:

foreach ($json_arr as $key => $var) { 
    if (!is_array($var)) { 
     if ($key == 'name') { 
      echo "Name: " . $var . "<br />"; 
     } 
    } 
    else { 
     if ($key == 'hometown') { 
      echo "Hometown: " . $var['name'] . "<br />"; 
     } 
    } 
} 

以上應該做你所需要的。

+0

完全是我之後,現在就試用它,它的工作完美。非常感謝! :) – thrash 2013-02-10 05:31:23

+0

@thrash歡迎。 – Daedalus 2013-02-10 05:31:50

+0

對不起,我只是意識到我需要包含一些朋友的詳細信息,所以不能使用「/我/朋友/」,並且必須使用API​​中的官方網址,它會以類似的數組形式返回不同的信息。我已經能夠成功地返回名稱,但家鄉,生日等數組都在朋友陣列中,我想知道您是否可以幫助我修改之前發佈的代碼,以便返回其他詳細信息。我已經嘗試了自己,但我得到了每個錯誤,所以我認爲我做錯了什麼?非常感謝! – thrash 2013-02-10 17:56:07

0

查詢來自Facebook的特定數據的最佳方式是FQL。退房https://developers.facebook.com/docs/technical-guides/fql/,讓我知道如果這就是你要找的。

我提供的鏈接上的示例將抓取所有活動用戶的朋友。如果您使用的樣本作爲首發(具有用有效的訪問令牌一起填寫了所有正確的信息爲你的應用程序),然後去那裏說// run fql query的區域,並在下面一行改變uid2name

fql?q=SELECT+uid2+FROM+friend+WHERE+uid1=me() 

添加以下到腳本的末尾,然後將填充所有朋友的名字放入數組稱爲$names

$r = $fql_multiquery_obj['data'][0]['fql_result_set']; 
foreach ($r as $u) 
{ 
    $name[count($name)] = $u['name']; 
} 

是否幫助你做你想做什麼?讓我知道:)