2011-09-21 46 views
4

我創建了一個用作扇門/扇門的Facebook粉絲頁面。當用戶點擊「贊」按鈕時,頁面會重定向到牆上。我想覆蓋這種行爲,並將頁面重定向回扇形門的喜歡版本。該應用程序是一個iFrame頁面標籤應用程序,使用PHP簽名的請求來確定喜歡/不喜歡的狀態。如何在點擊「贊」時阻止扇門/類似門重定向到牆

這方面的一個例子是http://www.facebook.com/1800flowers 當你喜歡的頁面,它會將您重定向到http://www.facebook.com/1800flowers?sk=app_116748578401618

所以,我的搜索夫發現了一段JavaScript代碼本來應該解決這個問題:

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

我已經嘗試在這兩個頁面中都放置這個JavaScript塊,並且不喜歡頁面的某些部分。無論哪種方式,它會創建一個重定向循環,其中頁面不斷刷新。

如果此代碼是答案,它應該放在哪裏,以及「linkgoeshere」應該替換爲什麼?有可能我一直在使用錯誤的鏈接。

如果這不是答案,是否有其他選擇?

回答

1

過去幾天我一直有這個問題,但今天我找到了解決方案。您懷疑這是由於頁面上的新推薦對話框造成的。此框僅出現在PLACES的頁面上。如果你有一個地址分配給你的頁面,然後將其刪除,當你喜歡並且不重定向到wallpage時,你的fangate將在窗口中重新加載。

+0

看起來這將是我接受的答案。我不想這麼做,但它看起來是唯一的方法。謝謝你確認我的懷疑。我無法相信我找不到更多的人問這個問題。 :/ – embolden

1

你不應該需要任何JavaScript。

確保在管理頁面的「管理權限」部分設置「默認登陸選項卡」作爲您的粉絲大門。

+0

感謝您的迴應邁克。我將Default Landing Tab設置爲扇門。如果他們不喜歡它,它們在頁面上登陸時就會起作用。他們喜歡它之後發生重定向。 – embolden

+0

沙盒模式下的應用程序?點擊後,它應該只是重新加載頁面與你的任何應用程序。 –

+0

該應用不處於沙盒模式。當點擊按鈕時彈出新的推薦內容。這是否有可能導致錯誤?有沒有辦法可以禁用它? – embolden

0

這是我使用的解決方案。另外,請確保按照上面的標記設置默認的着陸標籤。您需要下載最新的Facebook sdk for php,並將您的應用程序ID,應用程序密碼和粉絲頁的路徑替換爲下面的$ loginNextPage。

請注意,有兩個地方可以添加自己的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> 
    <? 
    } 
    ?> 
+0

感謝您的回覆。目前它的構建方式並不需要所有的授權信息。使用提供的代碼,我得到以下錯誤:致命錯誤:調用未定義的方法Facebook :: getSession()。我用來控制喜歡與否的方法是在這裏最流行的答案[鏈接](http://stackoverflow.com/questions/4703678/how-to-determine-if-facebook-user-likes -a-certain-page) – embolden

2

這是Facebook上的錯誤,現在,這裏描述 - https://developers.facebook.com/bugs/110015112440103

這將會是巨大的,有一個臨時修復,但因爲對Like按鈕的代碼是一個什麼樣的網頁標籤外部訪問,我對於解決方案可能看起來有什麼問題沒有什麼影響,但是從您的頁面中刪除地址使它不是一個「地點」,這似乎是唯一受到影響的頁面。