Достижения рескрепе провалились. Ошибка № 3403 Достижение не было зарегистрировано

Позвольте мне начать с того, что это признанное приложение с 51 признанным достижением, которые работали в течение последних нескольких лет, а несколько дней назад.

Я полагаю, что создал этот беспорядок, внеся небольшие изменения в страницу, очищенную системой достижений Facebook. Сами URL-адреса достижений не изменились, но мои журналы ошибок предупредили меня об орфографической ошибке в теге og: url, поэтому я исправил ее вместе с соответствующим именем файла.

Фасидизм не платит, кажется.

С тех пор всякий раз, когда система пытается присвоить достижение, я получаю ошибку:

E: (#3403) Achievement hasn't been registered for this application.

Поэтому я попытался пересмотреть результаты с помощью отладчика объектов Open Graph
и через вызовы к API вот так:

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

Я ожидал, что в любом случае мне придется использовать один из этих методов после внесения изменений.

В отладчике объектов очистка идет без предупреждений. Повторная очистка API также проходит без проблем и отображает каждое достижение правильно, в полном объеме и с правильным идентификатором приложения.

Взятие уникального идентификатора достижений и просмотр их в обозревателе объектов также выглядит хорошо.

Общие вызовы API для отображения всех достижений, зарегистрированных для этого приложения, например:

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

Верните полный список, как и следовало ожидать, без ошибок или предупреждений, но проблема сохраняется.

Естественно, я вытащил все соответствующие файлы из-под контроля версий и восстановил оригиналы, вынудив по пути еще одну повторную очистку, но без кубиков.

Вытаскиваю мои волосы сейчас, поэтому любой совет очень ценится.

0

Решение

Хорошо, я понял это, в основном у меня было 2 динамических URL для достижений
achievementDescription.php
achievementContent.php

successDescription.php был использован для регистрации всех достижений в Facebook несколько лет назад. Содержится в метатегах было:

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

Странно то, что на самом деле никогда не было никакого файла creationContent.php, так как он ошибся в имени файла при создании. Исправление вопроса заставило Facebook видеть это как новое достижение, которое кажется.

С моей попыткой «исправить», то есть с правильно названным и расположенным достижением Content.php, я воспользовался советом @ Igy и попытался перерегистрировать одно из существующих достижений и обнаружил, что оно создало новое дублирующее достижение, связанное с URL-адресом successContent.php ( все ранее существовавшие достижения связаны с достижением Description.php)

Итак, я предполагаю, что процедура очистки была обновлена ​​в конце Facebook. Исходная система регистрации, должно быть, пыталась перейти по неработающей ссылке, а затем просто присвоила достижение URL-адресу достижениеDescription.php. Попытка перераспределить достижение в новой системе без правильного назначения для og: url привела к его провалу.

Присвоение свойству og: url самоссылки достиженийDescription.php, т.е.

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

а затем повторная регистрация всех достижений привела к тому, что система Facebook снова начала распознавать достижения, и мы можем наградить их игрокам, что важно, что это произошло без создания дублирующих достижений для моего приложения.

0

Другие решения

Других решений пока нет …