1

ユーザーの上位 10 人の友人の uid を取得し、各 uid を指定された文字列でラップするにはどうすればよいですか?

From: Get list of top friends for facebook app , I see this:

$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)

お時間をいただきありがとうございます。


アクセス許可が付与されているとします。
(これは、ユーザーが許可を許可した後にのみ発生するため、既に許可されていると仮定します。)

4

1 に答える 1

5

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": [

access $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/en/function.asort.phpを呼び出して配列をソートすると、上位 x スコアをループできます。

あなたが示したコードは関数ではなく、実際には右中括弧がありません。関数ではないため、実際には何も返しません。

警告:は、すべてのメッセージを繰り返すためにページ呼び出しを/me/statuses取得する必要がある呼び出しごとに限られた一連のステータス メッセージのみを返します。返される上位の友達は、上で作成した制限にのみ基づいています。previous

于 2012-06-09T20:23:53.460 に答える