簡體   English   中英

檢索Facebook上用戶的前10個朋友(獲取其UID)PHP,Facebook API

[英]Retrieve top 10 friends of user on Facebook (get their UIDs) PHP, Facebook API

如何獲取用戶的前10個朋友的uid ,並用指定的字符串包裝每個uid?

來自: 獲取Facebook應用程序的頂級朋友列表 ,我看到了:

$statuses = $facebook->api('/me/statuses');

foreach($statuses['data'] as $status){
// processing likes array for calculating fanbase. 

        foreach($status['likes']['data'] as $likesData){
            $frid = $likesData['id']; 
            $frname = $likesData['name']; 
            $friendArray[$frid] = $frname;
        }

 foreach($status['comments']['data'] as $comArray){
 // processing comments array for calculating fanbase
            $frid = $comArray['from']['id'];
            $frname = $comArray['from']['name'];

}

但是那又返回什么呢? 它是否以數組形式返回朋友的用戶ID? 我想將其存儲在搜索結果的數組中,因此我可以使用foreach封裝每個ID並對其進行滿意的處理。

如果上面的代碼足夠,我是否應該為頂級朋友數組調用$frid 我只需要理解。 :o)

感謝您的時間。


假定已授予權限。
(這僅在用戶允許許可后發生,所以假設我們已經擁有了。)

通過轉到https://github.com/facebook/facebook-php-sdk/zipball/master確保您擁有最新的SDK

解壓縮后,布局如下圖所示

/facebook-php-sdk
index.php

其中index.php與用於在瀏覽器中顯示文件的朋友數

在PHP文件的開頭包含SDK

require('sdk/src/facebook.php');

轉到https://developers.facebook.com/apps ,選擇您的應用程序並獲取您的應用程序ID和應用程序密鑰,在PHP文件中創建一個實例

$facebook = new Facebook(array(
  'appId'  => 'YOUR_APP_ID_HERE',
  'secret' => 'YOUR_SECRET_HERE',
));

然后檢索$user數據,以便我們知道當前用戶已通過身份驗證

$user = $facebook->getUser();

在發送任何呼叫之前,請檢查驗證是否正確

if ($user) {
  try {
    $user_profile = $facebook->api('/me');
  } catch (FacebookApiException $e) {
    error_log($e);
    $user = null;
  }
}

現在致電/me/statuses該文檔位於https://developers.facebook.com/docs/reference/api/user/#statuses

$statuses = $facebook->api('/me/statuses');

這應該返回在所有當前用戶狀態消息的http://developers.facebook.com/docs/reference/api/status/上定義的狀態消息結構的數組。

現在您需要決定什么決定頂級朋友

  • 點贊數+評論
  • 評論數
  • 點贊次數

讓我們選擇選項1,並將每個權重賦予1。也就是說,點贊和評論在確定朋友數量方面的價值是相等的

因此,創建一個變量來保存它,例如$ friendArray

然后對所有狀態消息進行迭代,但是整個JSON響應以包裝的data開始

{
  "data": [

因此,訪問$statuses['data'] ,foreach將所有狀態消息作為status項給出

foreach($statuses['data'] as $status){

在此循環中,重復所有喜歡的操作並增加出現的每個id的值

foreach($status['likes']['data'] as $likesData){
    $frid = $likesData['id']; 
    $friendArray[$frid] = $friendArray[$frid] + 1;
}

在此循環中,迭代所有注釋並增加出現的每個id的值

foreach($status['comments']['data'] as $comArray){
    $frid = $comArray['from']['id'];
    $friendArray[$frid] = $friendArray[$frid] + 1;
}

foreach($statuses['data'] as $status){的外循環結束時,您應該有一個數組$friendArray ,該數組具有分數。

調用asort http://www.php.net/manual/zh/function.asort.php對數組進行排序,然后可以循環搜索最高的x分數。

您顯示的代碼不是函數,實際上缺少右花括號,因為它不是函數,所以實際上不返回任何內容。

注意事項/me/statuses每次調用僅返回有限的一組狀態消息,您需要獲得previous頁面調用以迭代所有消息。 返回的頂級朋友僅基於我在上面所做的限制。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM