API facebook send API Код ошибки: 100 API Ошибка Описание: Неверный параметр Сообщение об ошибке: "ссылка" недействительна
Я использую facebook post GRAPH UI для публикации личного сообщения со ссылкой на мое приложение в facebook.
Раньше он работал нормально, но за последние два дня диалог начал выдавать ошибку:
Произошла ошибка. Повторите попытку позже.
Код ошибки API: 100
API Ошибка Описание: Неверный параметр
Сообщение об ошибке: "ссылка" недействительна.
для отправки сообщения Я использую код:
function sendMessage(id) {
FB.ui({
method : 'send',
name : 'My APP',
link : 'https://apps.facebook.com/MY_APP/',
to : id,
show_error : 'true',
description : 'my description'
});
}
У меня есть Googled об этом, и только релевантная информация, которую я получаю, заключается в том, что facebook блокирует ссылку на свой собственный домен, чтобы избежать спама.
так как я меняю ссылку на другой сайт, на котором он работает.
Мне нужно отправить ссылку на мое приложение, поскольку я должен предоставить такую функциональность.
Ответы
Ответ 1
Найдено решение:
Проблема Причина:
Facebook не позволяет использовать свою собственную ссылку, чтобы остановить спам.
Решение проблемы:
Нет такого решения, как его обнародование Facebook API.
Другая тренировка:
Сократить URL-адрес, но его действие не работает, так как Facebook проверяет предоставленный URL-адрес.
URL-адрес перенаправления, как указано выше.
В моем случае я развернул дополнительную HTML-страницу, которая просто используется для перенаправления ссылки на Facebook.
Просто помните, что у вас должен быть таймер на несколько секунд, когда Facebook сканирует предоставленный URL-адрес, поэтому он не сможет обнаружить, что страница перенаправляется на ту же ссылку приложения.
Я использовал следующий код для моего файла HTML:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>My Application</title>
</head>
<body>
<p id="demo"></p>
</body>
<script type="text/javascript">
var url = "https://apps.facebook.com/MY_APPLICATION_ID";
var myVar = setInterval(function() {
myTimer()
}, 1000);
var counter = 3;
function myTimer() {
if (counter == 0) {
window.location.replace(url);
window.clearInterval(myVar);
}
document.getElementById("demo").innerHTML = "you will be redirected in "
+ counter + " seconds...";
counter = counter - 1;
}
</script>
</html>
Ответ 2
У меня были похожие проблемы, и я решил поделиться результатами моего расследования здесь.
Единственная информация в документации на Facebook, описывающая параметр link
, не очень помогает:
ссылка. URL, который отправляется в сообщении.
Есть несколько других вопросов StackOverflow, похожих/связанных с этим:
эта проблема оказалась неправильным параметром picture
"Вопрос вращался вокруг нашего URL-адреса, который был динамичным и нуждался в силовом кэшировании каждый раз. Теперь я делаю ajax-вызов" https://developers.facebook.com/tools/debug/og/object "обновить его, а затем запустить диалог отправки".
Я до сих пор не знаю точно, что представляет собой действительный параметр link
, но...
Сделав некоторые выводы из вышеуказанных вопросов и ответов, а также некоторые проверки с моей стороны, допустимые параметры link
:
- Должен быть "полностью квалифицированным". И.Е. содержащий
http://
или https://
- Должно не быть
facebook.com
ссылки
- Возможно, вам не нравятся перенаправления (или вы должны быть скрыты с ними)
- Поддерживайте URL-адреса не в списке "Домены приложений"
- Поддерживать строки запроса
- Может быть, можно свести счеты к динамически сгенерированным страницам (как в этот вопрос)
По-видимому, у Facebook есть своего рода механизм обхода ссылок, который выполняет некоторые неизвестные тесты в параметре link
для определения его действительности. Мне жаль, что они не захотят документировать это для нас.
Ответ 3
У меня была одна и та же проблема, за исключением того, что моя ссылка указывала на мой сайт.
Если кто-то находится в подобном сценарии, пожалуйста, проверьте это решение. Надеюсь, что это поможет некоторым людям.
Ответ 4
Если возникает плохой параметр, и сообщение читает "Код ошибки API: 100" - убедитесь, что поле рядом с "Поделиться с плейлистом, начинающимся с" не отмечено в YouTube, и эта ошибка не будет отображаться.