Facebook如何检查用户是否喜欢页面并显示内容?

Facebook如何检查用户是否喜欢页面并显示内容?,第1张

Facebook如何检查用户是否喜欢页面并显示内容?

如此答应的是我只使用javascript的答案:

页面正文的内容:

<div id="fb-root"></div><script src="http://connect.facebook.net/en_US/all.js"></script><script>  FB.init({    appId  : 'YOUR APP ID',    status : true,     cookie : true,     xfbml  : true    });</script><div id="container_notlike">YOU DONT LIKE</div><div id="container_like">YOU LIKE</div>

CSS:

body {width:520px;margin:0; padding:0; border:0;font-family: verdana;background:url(repeat.png) repeat;margin-bottom:10px;}p, h1 {width:450px; margin-left:50px; color:#FFF;}p {font-size:11px;}#container_notlike, #container_like {    display:none}

最后是javascript:

$(document).ready(function(){    FB.login(function(response) {      if (response.session) {          var user_id = response.session.uid;          var page_id = "40796308305"; //coca cola          var fql_query = "SELECt uid FROM page_fan WHERe page_id = "+page_id+"and uid="+user_id;          var the_query = FB.Data.query(fql_query);          the_query.wait(function(rows) {   if (rows.length == 1 && rows[0].uid == user_id) {       $("#container_like").show();       //here you could also do some ajax and get the content for a "liker" instead of simply showing a hidden div in the page.   } else {       $("#container_notlike").show();       //and here you could get the content for a non liker in ajax...   }          });      } else {        // user is not logged in      }    });});

那么,它是做什么的呢?

首先,它登录到FB(如果您已经有USERID,并且确定您的用户已经登录了Facebook,则可以绕过登录内容,并

response.session.uid
用YOUR_USER_ID替换(例如从rails应用程序中)

之后,它在

page_fan
表上进行FQL查询,其含义是,如果用户是页面的支持者,则返回用户ID,否则返回一个空数组,此后根据结果将其显示为div或其他。

更新2

如某人所述,要使javascript版本正常工作,就需要jQuery,但您可以轻松删除它(它仅用于document.ready和show / hide)。

但是jQuery很简单

更新

相对于我在下面发布的评论,是一些红宝石代码,用于解码Facebook提取到其在Facebook内显示时发布到您的CANVAS URL的“
signed_request”。

在动作控制器中:

depred_request = Canvas.parse_signed_request(params[:signed_request])

然后检查已解码的请求并显示一页或另一页..(不确定这一点,我对ruby不满意)

depred_request['page']['liked'] class Canvas    class << self      def parse_signed_request(secret_id,request)        enpred_sig, payload = request.split('.', 2)        sig = ""        urldepre64(enpred_sig).each_byte { |b|          sig << "%02x" % b        }        data = JSON.parse(urldepre64(payload))          if data['algorithm'].to_s.upcase != 'HMAC-SHA256'          raise "Bad signature algorithm: %s" % data['algorithm']        end        expected_sig = OpenSSL::HMAC.hexdigest('sha256', secret_id, payload)        if expected_sig != sig          raise "Bad signature"        end        data      end      private      def urldepre64(str)        enpred_str = str.gsub('-','+').gsub('_','/')        enpred_str += '=' while !(enpred_str.size % 4).zero?        base64.depre64(enpred_str)      end    end end


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5022019.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-15
下一篇 2022-11-15

发表评论

登录后才能评论

评论列表(0条)

保存