0

ダウンロードリンクがあるページを作りたいです。これは、Facebook で私のファン ページを気に入ったユーザーにのみ表示されます。それ以外の場合は、ボタンのように表示されます。

次のコードを使用していますが、

  <?php

include_once("php/src/facebook.php");

    // Create our Application instance.
    $facebook = new Facebook(array(
      'appId'  => '354967071210221',
      'secret' => 'APP_Secret',
      'cookie' => true,
    ));

$signed_request = $facebook->getSignedRequest();

// Return you the Page like status
$like_status = $signed_request["page"]["liked"];

if($like_status)
{
    echo 'User Liked the page';
    // Place some content you wanna show to user

}else{
    echo 'User do not liked the page';
    // Place some content that encourage user to like the page
}
?>
4

5 に答える 5

1

この情報は、FQL クエリを使用して取得できます

1) page_id を調べる

SELECT page_id, pic FROM page WHERE username="grasphub"

(あなたの page_id は 354967071210221 です)

2) このクエリを使用して、ユーザーがあなたのページを気に入ったかどうかを確認します

SELECT page_id FROM page_fan WHERE page_id=354967071210221 AND uid = me() 

ユーザーがまだページを気に入っていない場合、このクエリは空の結果を返します。

したがって、コードは次のようになります。

include_once("php/src/facebook.php");

// Create our Application instance.
$facebook = new Facebook(array(
    'appId'  => '354967071210221',
    'secret' => 'APP_Secret',
    'cookie' => true,
));

$user = $facebook->getUser();
if ($user) { // Checks if there is already a logged in user
    try {
        $result = $facebook->api( array(
            'method' => 'fql.query',
            'query' => 'SELECT page_id FROM page_fan WHERE page_id=354967071210221 AND uid = me()',
        ));

        if (!empty($result[0]['page_id'])) {
            echo 'User Liked the page';
        } else {
            echo 'User do not liked the page';
        }
    } catch (FacebookApiException $e) {
        error_log($e);
        $user = null;
    }
} else { //Ask for bare minimum login
    $login_url = $facebook->getLoginUrl();
    header("Location: ".$login_url);
}
于 2012-10-23T14:21:42.030 に答える
0

まずはやってみる

$signed_request = $facebook->getSignedRequest();
print_r($signed_request);

空であるか、正しいデータが含まれていない場合は、アプリケーションの設定 (キャンバス URL、タブ URL など) を確認する必要があります。

于 2012-10-23T13:24:04.903 に答える
0

これは、グラフ API .edge.create を使用して行うことができ、いいねボタンのクリック イベントをリッスンします。

FB.Event.subscribe('edge.create',function(response) 
{

     download();
});

FB.api("me/likes/page_id", function(response) 
{
              if ( response.data.length == 1 ) 
             { 

              //Has liked the page
              } else 
              {
               //Havent liked the page  
 }});

スクリプトのソースとダウンロード - http://www.webtuts.info/webdevelopment/facebook-download-script-2/225/

于 2012-11-08T18:09:23.030 に答える
0

クライアント側またはサーバー側の 2 つのオプションがあります。クライアント側スクリプトに関する優れたチュートリアルへのリンクは次のとおりです


-like-button/

サーバー側の場合 - ユーザーのいいねにアクセスするには、ユーザーから許可を得る必要があります - 私は FB SDK を使用しません。独自のコードを作成しました: - 最初に、ユーザーは次の URL を使用してログインする必要があります:

$loginUrl = "https://www.facebook.com/dialog/oauth?client_id={$appId}&redirect_uri= {$redirectUri}&scope={$scopeEncoded}";

  • ユーザーがログインすると、FB はこのアプリに「いいね!」にアクセスする許可を与えるかどうか尋ねます。
  • 受け入れてリダイレクトした後、$code = $_GET['code'] を使用して URL のコードを取得します。
  • 最後のステップはトークンを取得することです。この URL に対して curl を使用してリクエストを行う必要があります。

$url = "https://graph.facebook.com/oauth/access_token?client_id={$appId}&redirect_uri={$redirectUri}&client_secret={$secretKey}&code={$code}";

  • これで、次の URL を使用してユーザーのいいねに curl リクエストを行うことができるトークンが得られました。https://graph.facebook.com/me/likes?access_token=$accessToken

  • いいねをループして、ユーザーがあなたのページを気に入っているかどうかを確認するか、次の URL を使用します。

    $url = "https://graph.facebook.com/me/likes/{$yourpageId}/?access_token={$accessToken}";

于 2012-10-23T13:53:41.383 に答える
0

このコードが機能する場合

場合は、この中にファイルを表示するように設定できます

if($like_status)
{
    echo 'User Liked the page';
    // Place some content you wanna show to user
}

試して!!!

あなたのFBページのように/異なって、それがあなたに異なる値を与える場合にページが返すものを確認し、このIF内で、ユーザーがあなたのページを気に入っていることを知っています..

于 2012-10-23T13:19:05.303 に答える