2011-07-20 28 views
4

我的團隊最近推出了一個Web應用程序,使大量使用Facebook的Like按鈕的提取數據。他們中的大多數都能正常工作,但其中一些Like URL無法通過Facebook或其URL Linter正確識別。這些URL是在我們的應用程序的頁面重定向到一個Facebook應用程序,相應的頁面...Facebook網址爲短絨錯誤頁

實例網址:
http://www.3mframeworks.com/pages/redirect?url=http%3A%2F%2Fapps.facebook.com%2Fcouplespeak%3Fv%3Dvideos%26id%3D17

Facebook的網址短絨返回數據,就好像在「ID」參數ISN 「T有:
https://developers.facebook.com/tools/lint?url=http%3A%2F%2Fwww.3mframeworks.com%2Fpages%2Fredirect%3Furl%3Dhttp%253A%252F%252Fapps.facebook.com%252Fcouplespeak%253Fv%253Dvideos%2526id%253D17

其他的Open Graph解析器返回正確的數據:
OG:它:http://ogit.heroku.com/inspect?url=www.3mframeworks.com%2Fpages%2Fredirect%3Furl%3Dhttp%253A%252F%252Fapps.facebook.com%252Fcouplespeak%253Fv%253Dvideos%2526id%253D34
OpenGraph.In:http://www.opengraph.in/?url=www.3mframeworks.com%2Fpages%2Fredirect%3Furl%3Dhttp%253A%252F%252Fapps.facebook.com%252Fcouplespeak%253Fv%253Dvideos%2526id%253D34&format=html

我已經花了幾個小時尋找解釋...

  1. Facebook's documentation,下編輯Meta標籤,規定:
    • 「需要注意的是OG:標題和OG:類型是唯一最初編輯 - 您的頁面收到50個喜歡標題後固定,並且在您的頁面收到10,000個喜歡的類型變得固定後。「我像數遠不這些數字附近。
    • 「要讓Facebook上的更改反映出來,您必須強制您的頁面被抓取。當頁面的管理員單擊Like按鈕或URL輸入Facebook URL Linter時,該頁面被抓取。你可以通過編程來強制你的頁面被捲起來。「我已經嘗試了所有這三種方法都沒有成功。
  2. Facebook Like button - fetches "wrong" image表明,URL鏈接不會像Facebook所聲稱的那樣重置緩存。
  3. Facebook Open Graph not clearing cache表明,這可能是Facebook的緩存時間未知的時間後,將自我修正。
  4. facebook like button liking wrong url建議等待24-32小時,Facebook的緩存中進行復位。 自我的Open Graph標籤上次設置以來,它已經超過64個小時了。
  5. Why is Facebook returning the wrong page (affects Facebook Like and Share URL)?表明,在發佈之前提供給Facebook(例如,經由一個喜歡按鈕)任何URL應該改變。 我嘗試更改URL,重命名id參數,但沒有成功。

最有可能的罪魁禍首似乎是Facebook的緩存,但它已經被懷疑長,因爲這個網站是強調樣活性當前直播活動的一部分,我希望有人知道一招讓這個儘快工作。謝謝!

回答

5

一些片在Facebook的圖形API和URL短絨刪除所有,但第一多個網址參數。

圖形API

  1. 當參數字符串爲 「V =視頻& ID = 17?」, 「身份證」 丟失:
    https://graph.facebook.com/http%3A%2F%2Fapps.facebook.com%2Fcouplespeak%3Fv%3Dvideos%26id%3D17
  2. 當參數字符串爲「? id = 17 & v = videos「,」v「is lost:
    https://graph.facebook.com/http%3A%2F%2Fapps.facebook.com%2Fcouplespeak%3Fid%3D17%26v%3Dvideos
  3. 如果明確聲明圖形」id「參數,則不會發生這種情況:
    https://graph.facebook.com/?id=http%3A%2F%2Fapps.facebook.com%2Fcouplespeak%3Fv%3Dvideos%26id%3D17

不幸的是,第三點並沒有幫助我的情況:我沒有直接訪問Graph,所以我不能直接插入「?id =」。

URL短絨

對於我的應用程序,需要所有參數,以使正確的Open Graph的meta標籤,其結果支持我的發現:

  1. 當嵌套,編碼參數字符串「?v = videos & id = 17」,Open Graph標籤是針對「3M Couple Couple Speak Video Contest」渲染的。這是預期的行爲時,「ID」參數是不存在的:
    https://developers.facebook.com/tools/lint?url=http%3A%2F%2Fwww.3mframeworks.com%2Fpages%2Fredirect%3Furl%3Dhttp%253A%252F%252Fapps.facebook.com%252Fcouplespeak%253Fv%253Dvideos%2526id%253D17
  2. 當嵌套,編碼參數字符串爲「ID = 17 & V =視頻嗎?」,開放圖譜標籤被渲染爲「3M夫婦講翻譯比賽」。這是預期的行爲,當「V =視頻」不存在:
    https://developers.facebook.com/tools/lint?url=http%3A%2F%2Fwww.3mframeworks.com%2Fpages%2Fredirect%3Furl%3Dhttp%253A%252F%252Fapps.facebook.com%252Fcouplespeak%253Fid%253D17%2526v%253Dvideos
  3. 這不會與非嵌套,非編碼的參數字符串發生:
    https://developers.facebook.com/tools/lint?url=http%3A%2F%2Fapps.facebook.com%2Fcouplespeak%3Fv%3Dvideos%26id%3D17
  4. 對於其他的Open Graph解析器,切換嵌套,編碼參數的次序產生相同的數據,這是正確的:

不幸的是,第三點也沒有幫助我的情況:我們需要對URL進行嵌套和編碼。

這解釋了我看到的不良數據,以及爲什麼它只發生在具有多個參數的URL上。我向Facebook提交了bug report

1

,Facebook的頁面上iframe的來源是在這個網址似乎:

couplespeak-3M-production.heroku。com/videos

並且該頁面包含顯示在Facebook Linter中的標籤。

<meta content='3M Couple Speak Video Contest' property='og:site_name' /> 
<meta content="3M Couple Speak Video Contest" property="og:title" /> 
<meta content="website" property="og:type" /> 
<meta content="http://apps.facebook.com/couplespeak?v=videos" property="og:url" /> 
<meta content="http://www.3mframeworks.com/images/video_background.jpg" property="og:image" /> 
<meta content="100001154487117" property="fb:admins" /> 
+0

Open Graph數據是從重定向頁面中提取的,而不是Facebook應用程序的iframe。如果不知道這一點,診斷更加困難,所以我對不太清楚的道歉表示抱歉。無論如何,這個問題似乎存在於Facebook編碼URL參數的處理中(請參閱我的答案),除非提交錯誤報告,否則我無能爲力。感謝您的調查! – jhiro009

+0

明白了。我誤解了這個問題。我在Facebook的開發者關係團隊中,我會一起轉發您的調查,看看linter的行爲是否有意爲之。感謝您的關注。 – squinlan