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

时间:2012-02-27 16:14:32

标签: javascript facebook facebook-graph-api facebook-like

我有一个设置的Facebook“登陆标签”,我已经安装了另一个标签,我希望在粉丝点击“喜欢”按钮后激活该标签。我已经搜索了互联网并提出了JavaScript和PHP SDK代码的混合,但到目前为止我还没有真正有效。

我想有两个主要问题:

  1. 在粉丝最初访问该网站后(他们直接进入着陆标签)并点击“赞”按钮,我希望iframe重定向到我创建的其他标签。我尝试了一个简单的JavaScript重定向(windows.location = "URL"),并将其更改为我想要的URL但不在Facebook iframe中 - 显然它也没有被点击的行为调用。

  2. 如果我可以完成上述工作,那么下一个问题是,一旦点击了like按钮,我希望第二个标签始终是用户的默认选项....现在用户点击“喜欢”之后“它会指向墙页面,当访问者返回页面时它又是墙页面。如果我遇到问题#1使用重定向,那么它总是会默认为第二个标签,还是当他们重新访问该页面时仍然会将人们送到墙上?

  3. 这是我找到的一些代码。 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";
    ?>
    

    在哪个位置需要哪个标签网址和应用ID?什么样的代码(JavaScript或PHP代码)?

4 个答案:

答案 0 :(得分:1)

如果您使用的是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/ 滚动到最后并阅读此para =&gt;与Facebook API集成

答案 1 :(得分:0)

我认为您的问题可以通过以下方式解决:

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

在那个页面上,他有关于Jason 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!";
    }
  }

而不是那些'echo',你可以回应'window.document.location.replace(“SOMEWHERE”)'

答案 2 :(得分:0)

用户喜欢该页面后会刷新,所以此时您可以使用$ page_id var来检测用户是否喜欢分页,然后重定向iframe的parnt,$ page_id的值将为1,所以在你的文件正文中你可以这样做:

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

答案 3 :(得分:0)

将于3月30日停止使用页面时间轴的着陆标签

编辑:如果你在谈论粉丝页面,如果不是没关系的话。