Facebook edge.create

时间:2012-01-26 06:01:19

标签: 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: true});
 FB.Event.subscribe('edge.create', function(href, widget) {
 // OK
 });
};

2 个答案:

答案 0 :(得分:2)

您将要查看signed_request documentation ...

这个签名的请求是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, '-_', '+/'));
}

答案 1 :(得分:1)

如果您的问题是关于like的{​​{1}},则只有授权您的申请并获得URL权限的用户才能获得此信息。为此,请发出下一个FQL查询:

user_likes

如果您的网页在OpenGraph中有ID(或您谈论Facebook页面),请查询图形API以查找userlikes连接:

SELECT user_id, url FROM url_like WHERE user_id = me() and url="URL_OF_PAGE"

但是如果你谈到在页面标签中运行的Facebook页面和应用程序,你不需要任何特殊的东西来获取这些信息,因为它将在GET https://graph.facebook.com/me/likes/OPEN_GRAPH_OBJECT_ID 内传递(使用PHP-SDK的PHP代码示例): / p>

signed_request