1. ホーム
  2. javascript

[解決済み] FacebookのAPIを利用して、ユーザーが自分のFacebookページやURLに「いいね!」を押しているかどうかを確認する方法。

2022-12-06 13:34:28

質問

頭がおかしくなりそうです。うまくいかないんです。

私は単にユーザーが私のページを好きかどうかをチェックしたいのですが、javascriptで iFrame アプリを使用します。

FB.api({
    method:     "pages.isFan",
    page_id:        my_page_id,
},  function(response) {
        console.log(response);
        if(response){
            alert('You Likey');
        } else {
            alert('You not Likey :(');
        }
    }
);

これが返ってくる。False

しかし、私は私のページのファンなので、それはtrueを返すべきではありませんか!?

どのように解決するのですか?

私もこの件では髪を引き裂かれました。あなたのコードは、ユーザーがそのための拡張権限を付与している場合にのみ動作しますが、これは理想的ではありません。

別のアプローチです。

簡単に言うと、もしあなたが OAuth 2.0 をオンにすると、Facebook は、Canvas の詳細オプションで $_REQUEST['signed_request'] を送信します。その signed_request を解析すると、ユーザーがそのページに「いいね!」を押したかどうかなど、ユーザーに関するいくつかの情報を得ることができます。

function parsePageSignedRequest() {
    if (isset($_REQUEST['signed_request'])) {
      $encoded_sig = null;
      $payload = null;
      list($encoded_sig, $payload) = explode('.', $_REQUEST['signed_request'], 2);
      $sig = base64_decode(strtr($encoded_sig, '-_', '+/'));
      $data = json_decode(base64_decode(strtr($payload, '-_', '+/'), true));
      return $data;
    }
    return false;
  }
  if($signed_request = parsePageSignedRequest()) {
    if($signed_request->page->liked) {
      echo "This content is for Fans only!";
    } else {
      echo "Please click on the Like button to view this tab!";
    }
  }