Я прочитал несколько постов, где люди указывают неправильный og: type или og: url в своих экземплярах объекта, и это приводит к этой ошибке. Это другая ситуация.
У меня есть одно приложение, которое отлично работает. Он определяет действие «любовь», которое работает с объектом «предмет», и производит, например, «Джо любит музыку» просто отлично. Его пространство имен приложений - «промо».
В целях тестирования я создал 2-е приложение, почти идентичное, с теми же определениями действий и объектов. Поскольку приложения не могут использовать одно и то же пространство имен, я назначил пространство имен этого приложения для «promoTest». И я сделал свой код настраиваемым так, чтобы объекты, созданные этим вторым приложением, отображались как правильный og: type = promoTest: item.
Итак, подведем итог
- приложение 1 создает объекты типа og: type 'promo: item'
- приложение 2 создает объекты og: type 'promoTest: item'.
- Оба префикса типов соответствуют соответствующим пространствам имен их приложений.
- Объекты, созданные в обоих этих приложениях, прекрасно работают в отладчике объектов. 0 ошибок.
Проблема в том, что приложение 1 работает отлично, а приложение 2 выдает следующую ошибку:
OAuthException: (#3502) Object at URL <url> has og:type of 'promoTest:item'. The property 'item' requires an object of og:type 'promo:item'.
Приложение 2 производит правильный тип. Но Facebook жалуется, что ему нужен тип, связанный с приложением 1. Похоже, что элемент приложения 1 заменяет элемент приложения 2. Конечно, есть сотни приложений с объектами с именем «item», поэтому нам нужны пространства имен.
Так почему же Facebook запрашивает у приложения 2 пространство имен приложения 1?