Подтвердить что ты не робот

Facebook FB.ui посылает диалоговое окно с прерывистой ошибкой ссылки

Это работает отлично в течение недели.

FB.ui({
  method: 'send',
  to: connectionid,
  name: subject,
  picture: staticurl + 'images/logoformysite.png',
  link: homeurl + '/' + username + '/something=' + var1 +'&somethingelse=' + encodeURI(var2) + '&evenmore=' + encodeURI(var3),
  description: invitemessage,
});

На прошлой неделе у меня была ошибка, когда URL-адрес находился в домене Facebook, Facebook заблокировал его. Я исправил это, и теперь и картинка, и ссылка не принадлежат домену Facebook и происходят с моего сайта. Но это началось сегодня, когда ничего не изменилось. Это прерывисто.

An error occurred. Please try again later.

API Error Code: 100 API Error Description: Invalid parameter Error Message: 'link' is invalid.

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


UPDATE: Я не уверен, как ссылка, которую я устанавливаю в диалоговом окне, можно установить глобально на странице. Он отправит получателям сообщения неправильную ссылку. Было бы очень полезно увидеть пример того, как это будет работать в новом открытом графическом мире.

ОТВЕТ AUG 12 2013

Вопрос вращался вокруг нашего URL-адреса, который был динамичным и нуждался в силовом кэшировании каждый раз. Теперь я делаю ajax-вызов " https://developers.facebook.com/tools/debug/og/object", чтобы обновить его, а затем запустите диалог отправки.

4b9b3361

Ответ 1

У меня была такая же проблема, и я прекратил работать с прошлой недели.

Вот мое решение:

Перейдите в отладчик Facebook и добавьте свой URL. Нажмите "Отладка" и исправьте все предупреждения, отображаемые Facebook.

Чтобы исправить мой, мне пришлось добавить метатег og.url на моей странице. Значение должно быть точно таким же, как тот, который вы хотите использовать (без перенаправления). Затем Facebook отправил мне это уведомление (предупреждение):

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

Попробуйте снова поделиться ссылкой с FB.ui, и теперь ваш пост должен автоматически отображать ваши значения og.

Примечание: Facebook, октябрьский перерыв будет автоматически использовать те og metas вместо пользовательских параметров FB.ui, поэтому теперь вы можете активировать разрывное изменение, чтобы подготовиться и удалить имя/изображение/описание из вашего кода.

UPDATE: Эта проблема может повториться, даже если то, что я упомянул выше, правильно реализовано.

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

Вы не найдете этого в документации по Facebook, связанной с SDK JavaScript (или вам повезло), чтобы сэкономить вам все дни, которые я потерял, чтобы найти эту невероятную проблему (помните, что только Facebook сказал, что ваша ссылка недействительна). найдите более подробную информацию о этой странице.

Я попытался использовать API-интерфейс Graph, чтобы обеспечить, чтобы моя вновь созданная страница была очищена Facebook, если она работает для вас, вам повезло. Второй метод, который не упоминается, но дает тот же результат, - отправить запрос на страницу "Отправитель объектов Facebook" и добавить ссылку на страницу в URL-адрес (например, https://developers.facebook.com/tools/debug/og/object?q=YourPageUrlHere). Делая это, Facebook на этот раз очистит вашу страницу, и теперь вы можете поделиться своими ссылками с API Facebook, теперь все работает.

Ответ 2

Я могу подтвердить, что это было исправлено для меня, когда я заставил Facebook сначала очистить URL-адрес, прежде чем пытаться отправить тот же URL-адрес через диалог FB UI.

Пример кода:

FB.api('https://graph.facebook.com/', 'post', {
    id: '[URL]',
    scrape: true
}, function(response) {
    FB.ui({
        method: 'send',
        name: '[name]',
        picture: '[Picture URL]',
        link: [URL]',
        description: '[description]'
    });
});

Ответ 3

Убедитесь, что, когда facebook запрашивает ваш URL-адрес, он никогда не будет перенаправлен.

Способ сделать это - представить facebook со специальной страницей, содержащей все нужные ингредиенты.

Вот пример (на основе php + symfony 1.4):

<?php
    if(preg_match('/facebookexternalhit/i', $request->getHttpHeader('User-Agent')))
    { ?>
        <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
      <head>
        <meta property="fb:app_id" content="<?php echo sfConfig::get('app_facebook_app_id'); ?>" />
        <meta property="og:url" content="<?php echo sfContext::getInstance()->getRequest()->getUri(); ?>" />
        <meta property="og:title" content="<?php echo $title; ?>" />
        <meta property="og:description" content="<?php echo $description; ?>" />
        <meta property="og:image" content="<?php echo $image; ?>" />
      </head>
      <body>
        hello Facebook!
      </body>
    </html>
    <?php
    }
?>