Facebook喜欢按钮并在链接URL中获取用户UID

时间:2011-12-07 18:49:43

标签: javascript facebook facebook-like facebook-javascript-sdk

截至2011年12月,尝试揭开Like按钮的神秘面纱。

http://developers.facebook.com/docs/reference/plugins/like/

有两个问题:

  1. 如何在用户喜欢的网址中加入“src”和“ref”参数?我意识到这是有据可查的,但我在测试中实际上无法做到这一点......请提供一个例子。
  2. 如何将喜欢它的用户的UID填充到他们喜欢的链接上,例如,如果他们喜欢http://example.com,我希望链接形成http://example.com?src=fb&ref=1234567
  3. 请指出任何例子,谢谢!

2 个答案:

答案 0 :(得分:4)

我假设你有用户名。
您可以按如下方式指定ref参数,(XFBML版本)

<fb:like href="http://example.com/fblikepage.php" 
     send="true" width="450" show_faces="true"
     ref="<?php echo $userid; ?>"
>
</fb:like>

如上所示指定ref参数时,无法指定src参数,它将自动由Facebook附加。该网址在Facebook上显示如下:http://www.example.com/fblikepage.php?fb_ref=xyz&fb_source=profile_oneline。请参阅文档中的以下部分。

  

ref - 用于跟踪推介的标签;必须少于50个字符,并且可以包含字母数字字符和一些标点符号(当前为+ / = - 。:_)。 当用户点击关于Like操作的流故事中的链接时,ref属性会将两个参数添加到引荐来源网址:   fb_ref - ref参数
  fb_source - 发生点击的流类型('home','profile','search','other')和故事类型('oneline'或'multiline'),与下划线连接。

当然,fb_source参数会根据网址在Facebook上的显示位置而有所不同,这将由Facebook完成。如果您想知道用户是否通过Facebook访问,您可以查看$_REQUEST变量中是否存在fb_source参数,如下所示:

<?php
 /* lots of code */
 if(isset($_REQUEST['fb_source'])){
   // we know the current user is visiting through some link on Facebook, so you can do whatever you wanted here
 }

希望这有帮助。

答案 1 :(得分:0)

  1. 正如你自己所说的那样,它有很好的记录(here)并且很难以更简单的方式在文档中解释。但是,这是一个类似按钮的示例(在src字符串中查找ref参数):

    <iframe src="//www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.example.com&amp;send=false&amp;ref=top_left&amp;layout=standard&amp;width=450&amp;show_faces=false&amp;action=like&amp;colorscheme=light&amp;font&amp;height=35&amp;appId=YOUR_APP_ID" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:35px;" allowTransparency="true"></iframe>
    

    如果您更具体地询问,我会尝试进一步提供帮助。

  2. 在加载like按钮的iframe之前,您必须拥有用户ID。然后,您可以使用服务器端脚本将ID填充到链接中。 http://example.com<?php echo ( "?ref=" . $userid); ?>可以做到。您不需要任何额外的src参数;如果用户将链接拉回到您的网站,Facebook将传递ref值作为fb_ref参数和引用者URL中的fb_source参数。
    示例:http://example.com?fb_ref=top_left&fb_source=profile_oneline

    我再次建议您阅读文档here

    您在测试过程中遇到了什么问题?您能否使用代码示例更新您的问题?