繁体   English   中英

创建FB应用以检查fb页面的“赞”

[英]Create FB app to Check 'Like' for fb page

我需要与我的站点和FB建立一个集成,并且我对FB文档(这是冗长的文字,从我的观点来看不是开发友好的)和授权令牌感到很困惑。

我的“应用”应仅检查用户是否“喜欢”我的fb页面,并在此基础上显示我网站上的某些内容。

我对以下几点感到困惑:

  • 什么是最好的方法( PHP SDKJS SDK )?
  • 我应该创建什么样的应用程序( 具有Facebook登录名的网站 ,“ 页面标签”的网站 ?)
  • 是否可以在没有授权令牌的情况下完成任务,或要求用户对应用程序进行授权?

到目前为止,我所做的是

我正在使用2方法:

  1. 图形API(不确定正确的名称)
    • 可以,但是向用户申请我的应用程序的权限
  2. PHP SDK
    • 不起作用:我认为这需要登录
    • 我更喜欢使用这种方法,因为它更干净(没有重定向)

1.图表API

<?php
$app_id = 'xxxxxxxxxxxxx';
$app_secret = 'xxxxxxxxxxxxxxxxxx';
$my_url = 'http://www.xxxxxxxxxxxxx.net/testfb.php';

$code = $_REQUEST["code"];

// auth user
if (empty($code)) {
    $dialog_url = 'https://www.facebook.com/dialog/oauth?client_id='
        . $app_id . '&redirect_uri=' . urlencode($my_url);
    echo("<script>top.location.href='" . $dialog_url . "'</script>");
}

// get user access_token
$token_url = 'https://graph.facebook.com/oauth/access_token?client_id='
    . $app_id . '&redirect_uri=' . urlencode($my_url)
    . '&client_secret=' . $app_secret
    . '&code=' . $code;

// response is of the format "access_token=AAAC..."
$access_token = substr(file_get_contents($token_url), 13);

$fql_query_url = 'https://graph.facebook.com/'
    . 'fql?q=SELECT+uid+FROM+page_fan+WHERE+page_id=351144741645225+AND+uid=me()'
    . '&access_token=' . $access_token;

$fql_query_obj = json_decode(file_get_contents($fql_query_url), true);

$data = array();
echo 'User Liked ?';

// display results of fql query
if (isset($fql_query_obj['data'])) {
    $data = $fql_query_obj['data'];
}
if (isset($data[0])) {
    echo 'YES';
} else {
    echo 'NO';
}

2. PHP SDK

<?php

require './lib/facebook.php';

$facebook = new Facebook(array(
    'appId' => 'xxxxxxxxxxxxxxxxxx',
    'secret' => 'xxxxxxxxxxxxxxxx',
    'cookie' => 'true'
));
//$access_token = $facebook->getAccessToken();
//$signed_request = $facebook->getSignedRequest();
// Get User ID
$user = $facebook->getUser();
var_dump($user);
//if ($user) {
    try {
        // Proceed knowing you have a logged in user who's authenticated.
        $user_profile = $facebook->api('/me');

        $isFan = $facebook->api(array(
            "method" => "fql.query",
            "query" => "SELECT uid FROM page_fan WHERE page_id = 'yyyyyyyyyy' AND uid = me()"
        ));
        var_dump($isFan);

    } catch (FacebookApiException $e) {
        error_log($e);
        $user = null;
    }
//} else {
//    echo 'no logged in';
//}

我最近做了这个。 思路如下:

  1. 用户首次加载您的应用时,它是通过POST请求发生的。 当时,Facebook发布了一个名为“ signed_request”的字段。

  2. 您需要对其进行解码,然后可以获取page.liked对象-告诉您用户是否喜欢该页面(由于Facebook签名的请求获得了UID PHP ):

$ signed_request = $ _REQUEST [“ signed_request”];

list($ encoded_sig,$ payload)= explode('。',$ signed_request,2);

$ data = json_decode(base64_decode(strtr($ payload,'-_','+ /')),true);

echo $ data [“ page.liked”];

似乎就是这样-不需要Facebook SDK或任何复杂的代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM