Facebook的“喜欢” - 如何让着陆标签重定向到另一个标签

问题描述:

我有一个Facebook“着陆标签”,也就是设置了,我已经安装了,我想风扇后要激活另一个选项卡中点击“像“按钮。我搜索了互联网,并提出了JavaScript和PHP SDK代码的混合,但到目前为止我还没有真正为我工作。Facebook的“喜欢” - 如何让着陆标签重定向到另一个标签

我想有两个主要问题:

  1. 风扇最初访问该网站(他们直接去登陆选项卡)后点击“Like”按钮,我想的iframe重定向到我创建的其他标签。我尝试了一个简单的JavaScript重定向(windows.location = "URL"),并将其更改为我想要的网址,但不在Facebook的iframe中 - 显然它也不是通过单击操作调用的。

  2. 如果我可以得到上述工作,接下来的问题是,一旦类似的按钮被点击,我想第二个标签始终是用户的默认值....现在用户点击“喜欢”它会指向墙上的页面,当访问者返回页面时,它会再次显示墙上的页面。如果我遇到问题#1与重定向一起工作,那么它总是默认使用第二个选项卡,或者当他们重新访问该页面时它仍然会将人员发送到墙上?

这是我找到的一些代码。 JavaScript SDK和PHP SDK。我哪里错了?

FB.Event.subscribe('edge.create', 
    function(response) { 
     location.href = 'URLofSecondtab'; 
    } 
); 

上面的代码是什么,我已被告知是就像在JavaScript Facebook的事件处理程序。

<div id="fb-root"></div> 

<script type="text/javascript"> 
    window.fbAsyncInit = function() { 
     FB.init({appId: 'idOfLandingTab', status: true, cookie: true, xfbml: true}); 
     //FB.Canvas.setSize({ width: 520, height: 1500 }); 
     FB.Event.subscribe('edge.create', 
      function(response) { 
       alert('like!'); 
       // put redirect code here eg 
       window.location = "URLofSecondtab"; 
      } 
     ); 
    }; 

    //Load the SDK asynchronously 
    (function() { 
     var e = document.createElement('script'); e.async = true; 
     e.src = document.location.protocol + 
      '//connect.facebook.net/en_US/all.js'; 
     document.getElementById('fb-root').appendChild(e); 
    }()); 
</script> 

我已经找到了PHP SDK,并一直没能实现:

<?php 
    // Sample PHP code to customize the a Facebook Fan Page iFrame Application 
    // Refer to http://www.hyperarts.com/blog/customizing-facebook-iframe-application- signed_request_reveal_tab 

    require 'facebook.php'; 

    $app_id = "APP_ID_HERE"; //which app id? the landing tab or the second tab that I want  //redirected? 
    $app_secret = "APP_SECRET_HERE"; 
    $facebook = new Facebook(array(
     'appId' => $app_id, 
     'secret' => $app_secret, 
     'cookie' => true 
    )); 


    $signed_request = $facebook->getSignedRequest(); 

    $page_id = $signed_request["page"]["id"]; 
    $page_admin = $signed_request["page"]["admin"]; 
    $like_status = $signed_request["page"]["liked"]; 
    $country = $signed_request["user"]["country"]; 
    $locale = $signed_request["user"]["locale"]; 

    echo "<br>page id = $page_id"; 
    echo "<br>page admin = $page_admin"; 
    echo "<br>like status = $like_status"; 
    echo "<br>country = $country"; 
    echo "<br>locale = $locale"; 
?> 

哪个选项卡URL和应用程序ID需要在什么地方?什么样的代码(JavaScript或PHP代码)?

我认为你的问题可以用这个来解决:

How to check if a user likes my Facebook Page or URL using Facebook's API

在该网页上,他对杰森Siffring的回答验证码:

if($signed_request = parsePageSignedRequest()) { 
    if($signed_request->page->liked) { 
     echo "This content is for Fans only!"; 
    } else { 
     echo "Please click on the Like button to view this tab!"; 
    } 
    } 

而是那些“回声的,你可以呼应“window.document.location.replace(‘地方’)”

用户后喜欢的页面将刷新,所以在这一点上,你所能我们你e $ PAGE_ID变种来检测用户是否喜欢过的分页,然后重定向iframe的parnt,在$ PAGE_ID的值将是1,所以在您的文档的身体,你可以这样做:

<? if($page_id){ ?> 
<script>window.top.location.href = "http://www.facebook.com/FANPAGE_USERNAME?sk=app_APPID";</script> 
<? } ?> 

着陆标签将与时间表被禁止的网页,在3月30日

编辑:那是,如果你talinkg约约扇页,如果不是请不要介意。

如果您正在使用Facebook的页面选项卡,然后参数会像以下(PHP):

$signed_request=$_REQUEST["signed_request"]; 
list($encoded_sig, $payload) = explode('.', $signed_request, 2); 
$data = json_decode(base64_decode(strtr($payload, '-_', '+/')), true); 
//to get page id use this => $data["page"]["id"] 
//to get liked or unlike page => $data["page"]["liked"] = this will return 1 if 
//liked else blank 

更多信息:https://developers.facebook.com/docs/appsonfacebook/pagetabs/ 滚动至年底,并阅读本段=>与Facebook的API

整合