首先我要说的是,这是一个成熟的应用程序,具有51项既定成就,这些成就在过去几年中一直有效,直到几天前。
我相信我通过对Facebook成就系统刮下的页面进行一些小改动来创建这个混乱。成就网址本身没有改变,但我的错误日志提醒我og:url标记中的拼写错误,所以我纠正了它,以及相应的文件名。
看起来很苛刻似乎没有付出代价。
从那时起,只要系统试图奖励成就,我就会收到错误:
E: (#3403) Achievement hasn't been registered for this application.
所以我尝试通过Open Graph Object Debugger重新抓取成就 并通过调用API如下:
try{
$request = new FacebookRequest( $adminSession,
'POST',
"/?id=". FB_METRO_ACH_URL_BASE . $achievementId . '&scrape=true'
);
$response = $request->execute();
}catch .....
我预计在做出改变之后,无论如何都要做其中一种方法。
在对象调试器中,刮擦正常,没有任何警告。 API重新抓取也顺利完成并正确显示每个成就并使用正确的应用程序ID。
获取成就的唯一ID并在对象浏览器中查看它们看起来也很好。
常规API调用显示为此应用注册的所有成就,如下所示:
try{
$request = new FacebookRequest( $adminSession,
'GET',
"/" . APP_ID . "/achievements"
);
$response = $request->execute();
}catch .....
按照人们的预期返回完整列表,没有错误或警告,但问题仍然存在。
当然,我已将所有相关文件从版本控制中取出并恢复了原件,迫使另一个重新刮擦,但没有骰子。
现在拔掉我的头发所以任何建议都非常感激。