Javascript Facebook edge.create
我已经添加了edge.create事件,浏览器也可以触发该事件。但是,当用户返回站点时,我如何检查他们是否喜欢该页面Javascript Facebook edge.create,javascript,facebook,facebook-javascript-sdk,Javascript,Facebook,Facebook Javascript Sdk,我已经添加了edge.create事件,浏览器也可以触发该事件。但是,当用户返回站点时,我如何检查他们是否喜欢该页面 <div id="fb-root"></div> <script type="text/javascript"> <!-- window.fbAsyncInit = function() { FB.init({appId: 'YOUR_FACEBOOK_APP_ID', status: true, cookie: true, xfbml
<div id="fb-root"></div>
<script type="text/javascript">
<!--
window.fbAsyncInit = function() {
FB.init({appId: 'YOUR_FACEBOOK_APP_ID', status: true, cookie: true, xfbml: true});
FB.Event.subscribe('edge.create', function(href, widget) {
// OK
});
};
您将要查看…
此签名请求是验证发出请求的用户是否确实是“他/她所说的人”的facebooks方法。它是加密的,并使用您的应用程序机密对值进行解码。
解析此签名请求后,您将获得所需的数据。
function parse_signed_request($signed_request, $secret) {
list($encoded_sig, $payload) = explode('.', $signed_request, 2);
// decode the data
$sig = base64_url_decode($encoded_sig);
$data = json_decode(base64_url_decode($payload), true);
if (strtoupper($data['algorithm']) !== 'HMAC-SHA256') {
error_log('Unknown algorithm. Expected HMAC-SHA256');
return null;
}
// check sig
$expected_sig = hash_hmac('sha256', $payload, $secret, $raw = true);
if ($sig !== $expected_sig) {
error_log('Bad Signed JSON signature!');
return null;
}
return $data;
}
function base64_url_decode($input) {
return base64_decode(strtr($input, '-_', '+/'));
}
如果您的问题是关于like
forURL
,则您只能为授权您的应用程序并授予user\u likes
权限的用户获取此信息。要执行此操作,请发出下一个FQL查询:
SELECT user_id, url FROM url_like WHERE user_id = me() and url="URL_OF_PAGE"
如果您的页面在OpenGraph中有一个ID(或者您谈到Facebook页面),请通过查询的Graph API来访问的连接:
GET https://graph.facebook.com/me/likes/OPEN_GRAPH_OBJECT_ID
但是,如果您谈到Facebook页面和在页面选项卡中运行的应用程序,您不需要任何特殊的东西来获取此信息,因为它将在signed_request
中传递(使用php-SDK的示例php代码):
签名请求仅适用于facebook上运行的页面标签,而非独立网站(afaik)
$signedRequest = $facebook->getSignedRequest();
$data = $signedRequest['data'];
if ($data['page']['liked']){
// User is liked this Facebook Page
} else {
// User is not yet liked Facebook Page
}