2011-10-05 74 views

回答

0

FB使用您分配給對象的URL來刮取信息。解決這個問題的唯一方法是通過iframe或某種方法顯示對象。如果直接引用該對象,則需要一種方法將其重定向回合並對象視圖的適當包裝頁面。只要所有東西都在同一個域中,你就可以通過父節點找出一個在子框架之間進行通信的方法。

12

Open Graph使用URL作爲對象標識符,所以它不可能在一個頁面上有多個對象,頁面的對象。

相反,您需要每個對象的URL,並且該URL的HTML應包含正確的OG標記。

您可以在一個頁面上放置多個像按鈕,並通過爲每個類似按鈕指定「href」參數使它們指向每個對象。

不過,如果你希望用戶最終回到了同一頁,當他們點擊鏈接到這些對象上,你可以做到這一點,但它有點調皮......

在您在您的服務器上的對象頁面上,查看傳入的請求useragent。如果useragent包含字符串'facebookexternalhit',然後呈現HTML和OG標記 - 這是Facebook刮板如何看你的頁面。如果useragent不包含此字符串,請對您希望用戶查看的頁面執行302重定向。

結果?許多對象,但只有一個用戶可見頁面。贏得。

而且這是你會怎麼做:

<?php 

if ($_SERVER["HTTP_USER_AGENT"] != "facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)") { 
    redirect('http://www.somesite.com', 302); 
} 
function redirect($url, $type=302) { 
    if ($type == 301) header("HTTP/1.1 301 Moved Permanently"); 
    header("Location: $url"); 
    die(); 
} 

?> 

<html... 
2

https://stackoverflow.com/a/7659770/1354666這是一個偉大的答案,但關於它的一些東西沒有工作進行的順利我,所以我試過的替代品。

而不是在按鈕標籤中使用href我使用Iframes。

  1. 爲每個OG對象製作一系列html頁面。
  2. 在這些頁面的每一箇中添加必要的Facebook標頭腳本和Facebook根元素來調用Facebook API。
  3. 創建將調用每個OG對象的動作的表單輸入元素。給每個這些元素一個id。
  4. 包含一個小腳本,用於確定您是否是Iframe或頁面,以便您可以將用戶重定向到您的主頁,如果他們點擊了Facebook供稿。
  5. 最後,將頁面中的樣式設置爲無框架並放置您的大小的iframe,並將其設置爲不滾動。使用表單元素的id來定位哪些操作應該在iframe視圖中。

我仍然在爲我的手機輸出進行細化,但它的工作原理與大多數瀏覽器一樣。

相關問題