【问题标题】:integrating with Facebook like与 Facebook 集成
【发布时间】:2012-08-05 14:10:20
【问题描述】:

我想将“喜欢”按钮集成到我的网站中,但我无法理解网络上可用的信息。我读了这篇文章,它在另一篇 stackoverflow 文章中,但有一些问题:http://www.saschakimmel.com/2010/05/how-to-capture-clicks-on-the-facebook-like-button/。我之前也发布过这个问题,我收到的答案真的与我所问的无关。我最初的问题是在这里提出的:Facebook Integration into website

我已经在 facebook 中设置了一个“页面”,根据我在上面链接中的理解,您需要设置一个“应用程序”来获取 API 密钥。但我不明白的是,如果我使用这个 API 密钥,它将指向我新创建的“应用程序”,它没有粉丝群。如何链接此 API 密钥(或通过页面管理员设置另一个密钥),以便让用户“喜欢”真正的 Facebook 页面?

我想在用户喜欢该页面的那一刻运行一些 javascript 函数,但我对调用什么 API 函数以及这些函数是否返回 true/false 值也有点困惑?如果用户还没有喜欢该页面,我只想运行这些 js 函数..

希望这一切都有意义,希望您能提供任何解释来为我指明正确的方向。

【问题讨论】:

    标签: facebook facebook-like


    【解决方案1】:

    据我所知,您其他问题的答案涵盖了您需要知道的大部分内容。我注意到的一件事是您的评论:

    “我试图在后台设置促销代码,当有人 “喜欢”该页面”

    这方面有一些棘手的条款和条件。在继续之前先看看这里:https://developers.facebook.com/docs/guides/policy/examples_and_explanations/Rewarding_Users/

    如果您从添加点赞按钮开始,那么您需要单独检查每个登录的 Facebook 用户,看看他们是否与您的页面相关联。您可以使用 api 调用来获取他们的赞,并在响应中检查您的页面 id:

    FB.api('/me/likes', function(response) {
      console.log(response);
    });
    

    如果您找到匹配项,请继续您的宣传,否则显示“赞”按钮。

    【讨论】:

    • 这似乎是一个相当简单的任务。不过,从我读到的关于 API 的内容来看,您需要一个应用程序 ID 才能使用它,这是正确的吗?我无法理解应用程序和页面之间的区别。对于我想做的简单任务,我真的需要设置一个“应用程序”吗?如果是这样,我可以将我现有的页面链接到这个应用程序或其他东西吗?我看不出你是如何做到这一点的,显然我不希望人们“喜欢”我创建的一些什么都不做的应用程序,并且不去我的页面本身。
    • 您不需要应用程序 ID 即可拥有一个赞按钮。您确实需要一个应用程序 ID 才能在 facebook 图上进行查询,并使用他们的应用程序界面。页面是 Facebook 上用户可以连接的实体。应用程序是 facebook 上的一个实体,用户可以连接,它可以连接回他们,并代表他们采取行动;例如发布照片和更新等。如果您想以编程方式奖励您的用户,而不是在他们喜欢后在页面上发布您的奖励,那么您将需要一个应用程序
    • 那么是否可以将“应用程序”链接到我的页面?除了使用 API 之外,我看不到任何其他方法......?
    • 您可以在页面中添加应用标签
    • 太棒了,怎么样!?我在我的 facebook 页面上的任何地方都看不到它?你能给我看一个教程/链接吗?我在谷歌上找不到任何东西。感谢您的帮助艾比!
    【解决方案2】:

    您尝试做的事情是完全可能的,尽管我通常在服务器端进行计算。您可以使用以下基本概念通过 Javascript SDK 来实现。看看这个链接:http://fbmhell.com/2011/06/facebook-like-gating-in-iframe-tabs/

    基本概述是这样的:

    1. 您创建一个页面
    2. 您为促销标签创建了一个应用
    3. 您将应用标签添加到您的页面

    当用户在您的页面上点击您的应用标签时,Facebook 将向您返回一个签名请求。

    您可以使用如下函数解析出签名请求:

    function grokSignedRequest() {
        if (isset($_REQUEST['signed_request'])) {
          $encoded_sig = null;
          $payload = null;
          list($encoded_sig, $payload) = explode('.', $_REQUEST['signed_request'], 2);
          $sig = base64_decode(strtr($encoded_sig, '-_', '+/'));
          $data = json_decode(base64_decode(strtr($payload, '-_', '+/'), true));
          return $data;
        }
        return false;
    }
    

    如那篇文章中所述,如果您在该签名请求通过提供的函数运行后对其执行 print_r(),您将看到如下内容:

    stdClass Object
    (
        [algorithm] => HMAC-SHA256
        [issued_at] => 1307627872
        [page] => stdClass Object
            (
                [id] => 116633947708
                [liked] => 1
                [admin] => 1
            )
    
        [user] => stdClass Object
            (
                [country] => us
                [locale] => en_US
                [age] => stdClass Object
                    (
                        [min] => 21
                    )
            )
    )
    

    从那里,您可以访问喜欢的参数,并根据用户是否喜欢该页面来显示内容。

    // call the function to parse the signed request
    $sr_data = grokSignedRequest();
    
    // check like status
    if ($sr_data->page->liked==1) {
        echo 'you are a fan';
    } else {
        echo 'you are not a fan.';
    }
    
    // check admin status
    if ($sr_data->page->admin==1) {
        echo '<li>Dude, you are an ADMIN! BADASS!';
    }
    

    【讨论】:

    • 嘿,伙计,javascript API 中是否没有对我们有用的函数?肯定很多人都想做这个,我不明白为什么没有一个简单的函数来调用这个?除了 php,您还有其他示例代码吗?该站点采用 ASP 语言,可以使用 Javascript 进行任何 facebook 调用。
    • 您可以尝试在 Javascript SDK 中查找文档:developers.facebook.com/docs/reference/javascript/… - 不确定在粉丝页面选项卡上下文中的“已连接”是否算作粉丝/无粉丝,但我有点不知道不这么认为。我认为没有办法仅通过 Javascript 来实现。
    猜你喜欢
    • 2012-09-30
    • 2012-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-02
    • 2020-02-26
    • 2011-09-15
    • 2011-04-16
    相关资源
    最近更新 更多