2015-04-29 61 views
0

首先讓我說這是一個已建立的應用程序,其中有51個已建立的成就,這些成就都是在過去幾年中一直工作到幾天前。成就rescrape失敗。錯誤#3403成就尚未註冊

我相信我通過對Facebook成就係統所抓取的頁面進行一些小改動來創建了這個爛攤子。成就urls本身沒有改變,但我的錯誤日誌提醒我在og:url標籤中出現拼寫錯誤,所以我糾正了它,以及相應的文件名。

看起來似乎並沒有付錢。

從那以後,每當系統試圖獎的成就,我得到的錯誤:

​​

所以,我想重新刮通過Open Graph的對象調試 並通過調用像這樣的API所取得的成就:

try{ 
    $request = new FacebookRequest($adminSession, 
     'POST', 
     "/?id=". FB_METRO_ACH_URL_BASE . $achievementId . '&scrape=true' 
     ); 
    $response = $request->execute(); 
}catch ..... 

我希望在做出改變之後必須要做那些方法之一。

在對象調試器中,刮擦沒有任何警告就可以正常工作。 API重新掃描也毫無問題,並正確顯示每項成果,並使用正確的App ID完整顯示。

取得成就的唯一ID並在對象瀏覽器中查看它們也看起來不錯。

通用API調用來顯示這個應用程序註冊的所有成就,就像這樣:

try{ 
    $request = new FacebookRequest($adminSession, 
     'GET', 
     "/" . APP_ID . "/achievements" 
     ); 
    $response = $request->execute(); 
}catch ..... 

返回完整列表,人們所期望的,沒有任何錯誤或警告,但問題仍然存在。

當然,我已經將所有相關文件從版本控制中提取出來,並恢復原始文件,迫使另一個重新掃描,但沒有骰子。

現在拉我的頭髮,所以任何建議非常感謝。

+0

因此,您註冊了成就,更改了其中一些URL,通過調試工具運行了URL(舊?),現在無法使用舊URL或新URL發佈成就實例?你能否明確註冊新的URL作爲應用的「新」成就? – Igy

+0

感謝您的指針。我不願意重新註冊這些成就,因爲他們已經被授予了1000名玩家,但是其中一人確實爲我找到了問題。 –

回答

0

好了,我想通了這一點,基本上我有成就 2個動態URL achievementDescription.php achievementContent.php

achievementDescription.php被用來在幾年前註冊與Facebook所有的成就。 meta標籤內包含的是:

<meta property="og:url" content="http://example.com/achievementContent.php?aid=<?=$aid?>"/> 

奇怪的是,achievementContent.php從未真正存在,其在創建文件名拼寫錯誤。糾正這個問題使得Facebook將這看作是一項新的成就。

隨着我嘗試'修復',即有一個正確命名和位於achievementContent.php,我採取@ Igy的建議,並試圖重新註冊現有的成就之一,並發現它創造了一個新的重複成就鏈接到achievementContent .php URL(所有已存在的成就都與achievementDescription.php相關聯)

所以,我猜測在過渡期的Facebook結束時,刮取過程已經升級。原始註冊系統必須嘗試跟蹤已斷開的鏈接,然後將成果分配給achievementDescription.php網址。嘗試在新系統中重新取得成就,但沒有og:url的有效目標,導致其失敗。

設置OG:url屬性設置爲自基準achievementDescription.php即

<meta property="og:url" content="http://example.com/achievementDescription.php?aid=<?=$aid?>"/> 

,然後重新註冊所有成就已經引起了Facebook系統重新開始認識取得的成績,我們能夠給他們獎勵玩家,重要的是它已經做到了這一點,而不會爲我的應用創建重複的成就