[英]Create FB app to Check 'Like' for fb page
我需要与我的站点和FB建立一个集成,并且我对FB文档(这是冗长的文字,从我的观点来看不是开发友好的)和授权令牌感到很困惑。
我的“应用”应仅检查用户是否“喜欢”我的fb页面,并在此基础上显示我网站上的某些内容。
我对以下几点感到困惑:
到目前为止,我所做的是 :
我正在使用2方法:
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';
//}
我最近做了这个。 思路如下:
用户首次加载您的应用时,它是通过POST请求发生的。 当时,Facebook发布了一个名为“ signed_request”的字段。
您需要对其进行解码,然后可以获取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.