13

グラフ API でPages.isFanメソッドが機能しないのですが、グラフ API でページのユーザー ファンを確認する方法は何ですか?

ありがとう。

4

3 に答える 3

31

更新 2:
現在のユーザーがタブにランディングしたときに Facebook ページのファンであるかどうかを確認するには、この回答を確認してください。


更新:
接続を 使用してlikes、ユーザーがページのファンであるかどうかを確認できます。

https://graph.facebook.com/me/likes/PAGE_ID
&access_token=ACCESS_TOKEN

これは、空のデータ配列のいずれかを返します。

Array
(
    [data] => Array
        (
        )

)

またはファンの場合:

Array
(
    [data] => Array
        (
            [0] => Array
                (
                    [name] => Real Madrid C.F.
                    [category] => Professional sports team
                    [id] => 19034719952
                    [created_time] => 2011-05-03T20:53:26+0000
                )

        )

)

PHP-SDK を使用して確認する方法は次のとおりです。

<?php
require '../src/facebook.php';

// Create our Application instance (replace this with your appId and secret).
$facebook = new Facebook(array(
  'appId' => 'APP_ID',
  'secret' => 'APP_SECRET',
));

$user = $facebook->getUser();

if ($user) {
  try {
    $likes = $facebook->api("/me/likes/PAGE_ID");
    if( !empty($likes['data']) )
        echo "I like!";
    else
        echo "not a fan!";
  } catch (FacebookApiException $e) {
    error_log($e);
    $user = null;
  }
}

if ($user) {
  $logoutUrl = $facebook->getLogoutUrl();
} else {
  $loginUrl = $facebook->getLoginUrl(array(
    'scope' => 'user_likes'
  ));
}

// rest of code here
?>

JS-SDK を使用した同様のスクリプト:

FB.api('/me/likes/PAGE_ID',function(response) {
    if( response.data ) {
        if( !isEmpty(response.data) )
            alert('You are a fan!');
        else
            alert('Not a fan!');
    } else {
        alert('ERROR!');
    }
});

// function to check for an empty object
function isEmpty(obj) {
    for(var prop in obj) {
        if(obj.hasOwnProperty(prop))
            return false;
    }

    return true;
}

私のチュートリアルから取られたコード。


pages.isFan私にとってはまだ機能していますが、新しい PHP-SDK で FQL テーブルを使用できますpage_fan

$result = $facebook->api(array(
    "method"    => "fql.query",
    "query"     => "SELECT uid FROM page_fan WHERE uid=$user_id AND page_id=$page_id"
));
if(!empty($result)) // array is not empty, so the user is a fan!
    echo "$user_id is a fan!";

ドキュメントから:

page_fan テーブルを読み取るには、次のものが必要です。

  • 公開されている場合は有効ですaccess_token(Facebook のすべてのユーザーに表示されます)。
  • user_likes現在のユーザーを照会する場合のアクセス許可。
  • friends_likesユーザーの友人を照会する場合の権限。
于 2011-02-11T16:33:08.397 に答える
1

Facebook がすべてのタブ アプリ ページに送信する signed_request POST 変数に依存する別のアプローチを次に示します (「キャンバスの OAuth 2.0」詳細オプションがオンになっている場合)。

これの良いところは、別の fql.query を送信する必要がないことです。

于 2011-02-24T04:20:45.363 に答える
1

または、たとえばファンである場合や動的なものを作成した場合にコンテンツを表示したい場合は、fbml を使用できます。

例:

<fb:fbml version="1.1">
    <fb:visible-to-connection>This part is visible for fans only!
        <fb:else>This part is visible for non-fans</fb:else>
    </fb:visible-to-connection>
</fb:fbml>
于 2011-02-26T04:13:37.077 に答える