【问题标题】:How to stop fan gate / like gate from redirecting to wall when clicking "Like"单击“喜欢”时如何阻止扇形门/喜欢门重定向到墙壁
【发布时间】:2011-11-22 04:29:45
【问题描述】:

我创建了一个 Facebook 粉丝页面,用作粉丝门/点赞门。当用户点击“Like”按钮时,页面重定向到墙上。我想覆盖此行为并将页面重定向回扇门的“喜欢”版本。该应用程序是一个 iFrame 页面选项卡应用程序,使用 PHP 签名请求来确定喜欢/不喜欢的状态。

http://www.facebook.com/1800flowers 就是一个例子 当您喜欢该页面时,它会将您重定向到http://www.facebook.com/1800flowers?sk=app_116748578401618

所以我的 search-fu 找到了一段应该解决这个问题的 JavaScript:

<script type="text/javascript">
    if (top != self) top.window.location = 'linkgoeshere';
</script>

我尝试将这个 JavaScript 块放置在页面的“喜欢”和“不喜欢”部分中。无论哪种方式,它都会创建一个页面不断刷新的重定向循环。

如果此代码是答案,它应该位于哪里,应该用什么替换“linkgoeshere”?有可能我使用了错误的链接。

如果这不是答案,还有其他选择吗?

【问题讨论】:

    标签: javascript php facebook facebook-like


    【解决方案1】:

    这是 Facebook 上的一个错误,此处描述 - https://developers.facebook.com/bugs/110015112440103

    进行临时修复会很好,但由于“赞”按钮的代码不在页面选项卡可访问的范围内,我无法想象解决方案可能是什么样子,除了从中删除地址您的页面使其不是一个“地方”,这似乎是唯一受影响的页面。

    【讨论】:

      【解决方案2】:

      过去几天我一直遇到这个问题,但今天我找到了解决方案。您的怀疑是正确的,这是由页面上的新推荐对话框引起的。此框仅出现在 PLACES 的页面上。如果您为页面分配了地址,则将其删除,并且您的 fangate 将在喜欢时重新加载到窗口中,而不是重定向到墙页。

      【讨论】:

      • 看起来这将是我接受的答案。我不是很想这样做,但它看起来是唯一的方法。谢谢你证实了我的怀疑。我不敢相信我找不到更多的人在问这个问题。 ://
      【解决方案3】:

      这是我使用的解决方案。此外,请确保按照上面的标记设置默认登录选项卡。您需要下载最新的 facebook sdk for php,并在下面的 $loginNextPage 中替换您的应用 ID、应用密码和您的粉丝页面的路径。

      请注意,您可以在两个地方添加自己的 HTML 或包含应为相应受众提供的页面内容。

      此外,喜欢您页面的回访用户总是默认获得墙,无论您将什么设置为默认选项卡。所以如果他们离开然后回来,他们会得到墙。

       <?php
      
          require 'facebook.php';                
      
          $app_id = "YOUR APP ID";
          $app_secret = "YOUR APP SECRET";
          $loginNextPage = 'YOUR FAN PAGE URL'.'?sk=app_'.$app_id;
      
          $facebook = new Facebook(array(
                  'appId' => $app_id,
                  'secret' => $app_secret,
                  'cookie' => true
          ));
      
      
      
          $signed_request = $facebook->getSignedRequest();
      
          $page_id = $signed_request["page"]["id"];
          $like_status = $signed_request["page"]["liked"];
      
      
          if ($like_status) {
              // FOR FANS
              $session = $facebook->getSession();
              $loginUrl = $facebook->getLoginUrl(
                      array(
                      'canvas'    => 1,
                      'fbconnect' => 0,
                      'next' => $loginNextPage,
                      'req_perms' => 'publish_stream,photo_upload,user_photos,user_photo_video_tags'          
                      )
              );
      
              $fbme = null;
      
              if (!$session) {
                  echo "<script type='text/javascript'>top.location.href = '$loginUrl';</script>";    
                  exit;   
              }
              else {
      
                  try {
                      $access_token = $facebook->getAccessToken();
                      $fbme = $facebook->api('/me');
                      $user = $facebook->getUser();
      
                      $url = "https://graph.facebook.com/".$user;
                      $info = file_get_contents($url);
                      $info = json_decode($info); 
                      $vars = "id=$user&first_name=$info->first_name&last_name=$info->last_name&access_token=$access_token&pathToServer=$pathToServer&appName=$appName";
      
                  } catch (FacebookApiException $e) {
                      echo "<script type='text/javascript'>top.location.href = '$loginUrl';</script>";
                      exit;
                  }
      
      
          // Begin Like Gated Content.        
          ?>
          <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">   
          <html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml">
          <head>
          </head>
          <body>
          <h1>You Have Liked The Page</h1>
              </body>
          </html>
          <?
              }   
          }
          else {
              // FOR NON FANS
          ?>
          <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">   
          <html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml">
          <head>
            </head>
            <body>
            <h1>Click Like To View Content</h1>
              </body>
          </html>
          <?
          }
          ?>
      

      【讨论】:

      • 感谢您的回复。它目前的构建方式不需要所有的授权信息。使用提供的代码,我得到以下错误:致命错误:调用未定义的方法 Facebook::getSession()。我用来控制喜欢或不喜欢的方法是这里最流行的答案link
      【解决方案4】:

      您应该不需要任何 JavaScript。

      确保您在“管理”页面的“管理权限”部分中将“默认登陆选项卡”设置为您的粉丝门。

      【讨论】:

      • 感谢迈克的回复。我将默认着陆选项卡设置为扇形门。如果他们不喜欢它,它会在他们登陆页面时起作用。在他们喜欢之后才会发生重定向。
      • 应用是否处于沙盒模式?点赞后,它应该只使用您使用的任何应用重新加载页面。
      • 应用程序未处于沙盒模式。但是,单击“赞”按钮时会弹出新的推荐内容。这有可能导致错误吗?有没有办法禁用它?
      • 我希望我能帮助你更多。 Best Of College Football app 具有类似的扇形门功能。如果您喜欢该页面(当您在应用程序上时),它会将您重定向到墙上吗?我可以保证该应用程序上没有花哨的重定向 JS 或任何类似性质的东西。
      • 是的,我已经找到了一些可以正常工作的页面。老实说,我认为这与您点击“喜欢”时出现的“推荐”按钮有关。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-09
      • 1970-01-01
      • 2012-02-23
      • 2011-12-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多