web-dev-qa-db-ja.com

最新のAPIを使用してFacebookの友達のリストを取得する

私は Facebook SDKの最新バージョン を使用しています(よくわかりませんが、「グラフAPI」と呼ばれるものに接続できます)。 Facebookに接続できるようにFacebookのサンプルコードを適用しましたが、それは機能しますが、友人のリストを取得できません。

$friends = $facebook->api('friends.get');

これにより、次のエラーメッセージが生成されます。「致命的なエラー:Uncaught OAuthException:(#803)要求したエイリアスの一部が存在しません:543行目の/mycode/facebook.phpにfriends.getがスローされます」

それがなぜなのか、それが何を意味するのか、手がかりはありません。誰かが私に友人のリストを取得するための正しい構文(最新のFacebook API用)を教えてもらえますか? (「$ friends = $ facebook-> api-> friends_get();」を試してみると、「致命的なエラー:/mycode/example.phpの非オブジェクトでメンバー関数friends_get()を呼び出す」行129 "。)

私はコードのこのポイントの前に問題がないことを確認できます:有効なセッションでFacebookに接続し、情報を取得して画面にダンプすることができます...つまり、このコードは失敗した友人の前に完全に実行されます.get呼び出し:

$session = $facebook->getSession();
if ($session) {
    $uid = $facebook->getUser();
    $me = $facebook->api('/me');
}
print_r($me);
25
Eric

私はこれがあなたが望むものだと思う:

$friends = $facebook->api('/me/friends');
58
nfvs

これはPHP Facebookから友達を取得するコードのライブバージョンです

<?php
    $user = $facebook->getUser();


    if ($user) {
        $user_profile = $facebook->api('/me');
        $friends = $facebook->api('/me/friends');

        echo '<ul>';
        foreach ($friends["data"] as $value) {
            echo '<li>';
            echo '<div class="pic">';
            echo '<img src="https://graph.facebook.com/' . $value["id"] . '/picture"/>';
            echo '</div>';
            echo '<div class="picName">'.$value["name"].'</div>'; 
            echo '</li>';
        }
        echo '</ul>';
    }
?>
23
Yash Kumar

@nfvsのような友人を紹介するのは良い方法です。属性idと名前(idで順序付けられた)を持つすべての友人を含む多次元配列を出力します。このような友達の写真を見ることができます:

foreach ($friends as $key=>$value) {
    echo count($value) . ' Friends';
    echo '<hr />';
    echo '<ul id="friends">';
    foreach ($value as $fkey=>$fvalue) {
        echo '<li><img src="https://graph.facebook.com/' . $fvalue->id . '/picture" title="' . $fvalue->name . '"/></li>';
    }
    echo '</ul>';
}
12
geoffa

Graph APIのv2.0を使用してこの質問に出くわした人のために、これはもう機能しません。 v2.0では、/ me/friendsを呼び出すと、その人の友人アプリも使用のリストのみが返されます。

  • 現在の人の友達を表示するには、user_friends権限を持つユーザーアクセストークンが必要です。
  • これにより、リクエストを行ったアプリを(Facebookログイン経由で)使用した友人のみが返されます。
  • その人の友人がuser_friends許可を拒否した場合、その友人はこの人の友人リストに表示されません。
7

RESTエンドポイントを使用する場合、

$friends = $facebook->api(array('method' => 'friends.get'));

それ以外の場合、グラフAPIを使用している場合は、

$friends = $facebook->api('/me/friends');
3
rampr

facebook sdkの最近のバージョンでは、facebookがセキュリティ上の理由により一部の友達リストにアクセスできる機能を無効にしています...詳細についてはドキュメントを確認してください...

3
user2244112

代わりにFQLを使用します。これはSQLに似ていますが、Facebookのデータテーブル用で、作成したいデータクエリを簡単にカバーします。これらの/ xx/xxx/xx呼び出しをすべて使用する必要はありません。興味のあるテーブルと列を知っているだけです。

$myQuery = "SELECT uid2 FROM friend WHERE uid1=me()";
$facebook->api( "/fql?q=" . urlencode($myQuery) )

http://developers.facebook.com/docs/reference/fql/ の優れたインタラクティブな例

2
Michael Vain

CodeIgniter OAuth2/0.4.0スパークを使用して、

auth.phpファイルで、

$user = $provider->get_user_info($token);

$friends = $provider->get_friends_list($token);
print_r($friends);

そして、プロバイダーの下のFacebook.phpファイルに、次の関数を追加します。

    public function get_friends_list(OAuth2_Token_Access $token)
    {
            $url = 'https://graph.facebook.com/me/friends?'.http_build_query(array(
                    'access_token' => $token->access_token,
            ));
            $friends = json_decode(file_get_contents($url),TRUE);

            return $friends;
    }

prints the facebenter code hereook friends.
0
ShivarajRH
friends.get

友達のリストを取得する関数です

はい、これが最高です

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

    echo '<ul>';
    foreach ($friends["data"] as $value) {
        echo '<li>';
        echo '<div class="pic">';
        echo '<img src="https://graph.facebook.com/' . $value["id"] . '/picture"/>';
        echo '</div>';
        echo '<div class="picName">'.$value["name"].'</div>'; 
        echo '</li>';
    }
    echo '</ul>';
0
Deepak Kumar