0

私は以前、フローコードを使用して、ユーザーが私のFacebookページにいるときに、ユーザーが私のページのファンであるかどうかを確認していました。ここで、ユーザーが私のWEBSITEにいるときに、そのユーザーが私のFacebookページのファンであるかどうかを確認したいと思います。

<?php
            $signed_request = $_REQUEST["signed_request"];
            list($encoded_sig, $payload) = explode('.', $signed_request, 2);
            $data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true);

            if (empty($data["page"]["liked"])) {
                echo "You are not a fan!";
            } else {
                echo "Welcome back fan!";
            }
    ?>

Facebookのドキュメントを読みましたが、適切な答えを見つけることができませんでした。ヘルプ ?Facebookでアプリケーションのアクセス許可を処理したくありません。phpだけでこれにアプローチするにはどうすればよいですか?

4

2 に答える 2

4

page[ページ]タブにないアプリケーションにアクセスすると、詳細は表示されません。

page_fanテーブルへの単純なFQLクエリでそれを達成できます(もちろんFacebookページのIDを知っています):

SELECT uid, page_id FROM page_fan WHERE uid=me() AND page_id=PAGE_ID

または、オブジェクトのlikes接続についてuserGraphAPIにクエリを実行します。

https://graph.facebook.com/me/likes/PAGE_ID

これらの方法はどちらも、user_likesユーザーによる許可が必要です。

ユーザーの友達について同じ詳細を取得するには、許可を求め、友達IDfriends_likesに置き換えます。me/me()

更新:(コメントで質問した内容を説明するためだけに)ユーザーがURLやFacebookページを高く評価する/必要があることだけを知る必要がある場合は、フローの性質上、必要がない場合があります
user_likes

これを行うには、ユーザーがページを気に入ったときにトリガーされるイベントに( サブスクライブFB.subscribeします(イベントがある場合とは異なります)。edge.createedge.remove

edge.createこれは、ユーザーのアクションの時間にのみ起動されたため、ユーザーが以前にそのコンテンツを気に入らなかった場合にのみ信頼できることに注意してください。

于 2012-04-22T07:00:27.217 に答える
3

問題へのより良いアプローチは次のとおりです。

// to generate user access token after the user is logged in
$USER_ACCESS_TOKEN = $facebook->getExtendedAccessToken();

$isFan = curl("https://api.facebook.com/method/pages.isFan?format=json&access_token=" . $USER_ACCESS_TOKEN . "&page_id=" . $FACEBOOK_PAGE_ID);

        function curl($url) {

            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, $url);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
            $data = curl_exec($ch);
            curl_close($ch);
            return $data;
        }
于 2012-10-06T14:13:59.977 に答える